un 8 bits est-il bon en calcul ;-)

Tout ce qui concerne le logiciel original et sa sauvegarde avec entre autre la régénération des disquettes ou autres supports physiques.

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 17417
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

fneck a écrit :Question très naïve, il n'y a pas une contrainte ou limite imposée pas le processeur?
La représentation des nombres et les algorithmes de calcul sont en théorie indépendants du processeur. Par exemple, sur les 8 bits, les nombres en simple précision sont généralement stockés sur 16 bits, et sur 32 bits pour la double précision. Mais dès que l'on dépasse la taille des registres du processeur toutes les opérations deviennent plus compliquées, et surtout plus longues.
C'est pourquoi en général on utilise pour les entiers la taille des registres de la machine : 8 bits, 16 bits, 32 bits, etc. Ainsi les additions et les soustractions entières ne nécessitent qu'une instruction du processeur. Pour permettre de faire aussi les multiplications entières en une seule instruction, les bons processeurs huit bits, comme le 6803 ou le 6809, ont aussi des registres de calcul à 16 bits.
Si on accepte d'exécuter plusieurs instructions pour une opération, alors il n'y a plus de limite. On peut calculer PI avec 100 000 décimales exactes sur un MO5.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Patrice
Messages : 1556
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Message par Patrice »

Autant pour moi,j'ai répondu un peu trop vite :!:
Pour l'Alice il s'agit bien du format virgule flottante car le basic d'Alice n'autorise ni le format entier,ni les formats simple et double précision . :cry:
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17518
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Message par fneck »

Daniel a écrit :Par exemple, sur les 8 bits, les nombres en simple précision sont généralement stockés sur 16 bits...
D'où la limite que j'avais, sur je ne sais plus quelle machine, à traiter les opérations entre -32000 et +32000 et des poussières.
Daniel a écrit :Si on accepte d'exécuter plusieurs instructions pour une opération, alors il n'y a plus de limite.
En fait, il faut que le programme découpe l'opération en fonction de la capacité du processeur, c'est ça?
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Daniel
Messages : 17417
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

fneck a écrit :En fait, il faut que le programme découpe l'opération en fonction de la capacité du processeur, c'est ça?
Exactement comme pour une addition à la main : on additionne la dernière colonne, on stocke le dernier chiffre et on reporte la retenue dans la colonne précédente, et ainsi de suite pour toutes les colonnes. C'est la même technique quand on traite des nombres plus grands que la capacité des registres : on décompose les opérations sur les grands nombres en opérations élémentaires exécutable par le processeur.

Exemple avec des entiers 16 bits (-32768 à +32767) sur une machine 8 bits : pour additionner deux nombres, on additionne les octets de poids faible, puis les octets de poids fort plus la retenue de la première addition. Le processeur a finalement exécuté 3 additions

Pour les nombres en virgule flottante c'est plus compliqué et plus long, mais c'est le même principe : l'opération complexe est décomposée en opérations simples réalisées séquentiellement. On a inventé les coprocesseurs arithmétiques pour remplacer ce programme de calcul par une logique cablée, beaucoup plus rapide.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12319
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Message par 6502man »

Sujet interressant.

Juste une petite remarque:

on compare des resultats de calculs en Basic, qui j'en suis sur ne sont pas toujours optimises pour les processeurs utilisés (il n'y a qu'a voir les limitations du basic de l'alice 32 et 90).

Il faudrait pour pouvoir comparer utiliser plutot un programme assembleur, qui exploiterai au mieux les processeurs.

C64 --->6502
registre 8 bits
Calcul 8 bits
adressage 8/16 bits

ALICE--->6803
registre 8/16 bits
Calcul 8/16 bits
adressage 8/16 bits

......

D'ailleurs je serait curieux de voir le desassemblage des operations mathematique (multiplication et addition) du basic Alice ?
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13296
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

ajout : ZX81 (pas mal !)

Image

carl
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17518
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Message par fneck »

ajout: Intel Core 2 Duo 2GHz / DOSBox 0.72 / Gw-Basic 3.23 :wink:

Image

Moyen :?
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Daniel
Messages : 17417
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Quick Basic 4.5, la première ligne en simple précision et la deuxième en double précision

Image

Je n'ai pas fait le test, mais les résultats doivent être identiques avec la version professionnelle du Quick Basic : Microsoft Professional Basic 6.2. Dans les années 80 je l'utilisais pour faire du calcul scientifique.
Remarque : le processeur (dans mon cas un Athlon 64 bits) n'a évidemment aucune influence sur le résultat.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13296
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

éh éh ...

mode TRON

Code : Tout sélectionner

 je vois que tout le monde sort sa vielle version de basic qui doit tourner à une vitesse vole sur le DualCore ou AMD64
...mode TROFF
Daniel
Messages : 17417
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Carl a écrit :

Code : Tout sélectionner

 je vois que tout le monde sort sa vielle version de basic qui doit tourner à une vitesse vole sur le DualCore ou AMD64
Le Quick Basic a un très gros inconvénient : il utilise 100% du processeur même s'il ne fait rien. Je suppose qu'il scrute le clavier en permanence, ou un truc du même genre. Tant qu'il n'est pas arrêté les autres applications sont presque totalement figées, et le ventilateur tourne à fond, on se croirait dans un avion. Finalement il vaut mieux l'utiliser sur un 386 :wink:
Daniel
L'obstacle augmente mon ardeur.
hulotte
Messages : 405
Inscription : 10 avr. 2007 14:24
Localisation : (34)

Message par hulotte »

Depuis une carte Apple IIe :

Image

La précision est encore à revoir, même résultat qu'avec le c64.
---
Daniel
Messages : 17417
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

hulotte a écrit :même résultat qu'avec le c64.
C'est peut-être une coïncidence, mais je n'y crois pas trop. L'explication la plus probable est que les deux Basic ont exactement la même représentation des nombres en virgule flottante et exactement les mêmes algorithmes de calcul pour les fonctions mathématiques. Reste à savoir lequel a copié l'autre :?:
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13296
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Message par Carl »

Reste à savoir lequel a copié l'autre
oui étonnant !

pour l'anecdote, j'ai un emulateur Apple2 pour C64, il suffit d'avoir une disquette Prodos...

carl
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17518
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Message par fneck »

hulotte a écrit :...même résultat qu'avec le c64.
Voici peut être l'exxplication:
"Commodore BASIC, also known as PET BASIC, is the dialect of the BASIC programming language used in Commodore International's 8-bit home computer line, stretching from the PET of 1977 to the C128 of 1985. The core was based on 6502 Microsoft BASIC, and as such it shares most of the core code with other 6502 BASICs of the time, such as Applesoft BASIC."
(c) wikipedia
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Répondre