tiramiseb a écritSi tu veux, 5 lignes de BASIC peuvent correspondre à 10, 20, voire 30 lignes d'assembleur (selon les instructions utilisées)...
Alors imagine à quoi ressembleraient les programmes qui font actuellement plusieurs milliers, dizaines de milliers, centaines de milliers, voire millions de lignes dans certains cas, si tout était en assembleur...
Erreur mon cher Watson (tiramiseb),
1) penser programmation modulaire, où on découpe les taches, on préfère plein de sous-programmes ou sous-routines … on peut donc distribuer le travail, en suivant une méthodologie.
2) le programme assembleur sera plus petit bien souvent, l'exécutable parfois tellement plus petit pour remplir la fonction, donc tellement plus robuste et tellement plus rapide. 😃
En revanche : dans le cas du Blitz Basic, certaines fonctions étaient très évoluées, et en effet pouvaient prendre l'équivalent de beaucoup de lignes de code en assembleur.
Mais l'assembleur a permis d'atteindre des niveaux d'optimisations par la pensée des programmeurs, que certains compilateurs ont eu du mal à concurrencer. Je ne sais pas ce qu'il en est aujourd'hui.
Mais faire appel à une fonction du basic par exemple, a pu entraîner la sauvegarde de tous les registres du processeur en entrant dans la sous-fonction, même s'il n'y avait besoin que d'un seul registre, et restaurer tous les registres avant de continuer le programme. C'est exagéré, mais c'est un peu ce qui se passait avec le multitâche de toute façon, par le protocole des appels par le système …
Plusieurs programmes qui utilisent les mêmes registres d'un même processeur : il faut constamment lire et remettre les registres du processeur afin de changer de tache, sans perdre trop de temps, tout en enchaînant tous les processus.
Tout en obéissant aux interruptions logicielles et matérielles !
Ensuite la gestion des interruptions, des timers … les protocoles de communications,devoir parfois insérer des nop (null opérandes) avant de lire un signal électrique pour être sûr qu'il est bien établi …
Et l'Amiga de Commodore fut la machine personnelle la plus réussie au niveau du multitâche préemptif 😉
Tu pouvais lancer le formatage d'une disquette et lire de la musique en même temps, alors qu'à l'époque sans GNU/Linux, windows devait choisir entre formater la disquette ou lire la musique, enfin le son par le buzzer avec windows …
Mais l'Amiga n'est pas un PC, L'Amiga est une vraie machine multitâches (mais mono utilisateur) avec des coprocesseurs spécialement conçus pour les Amiga, et le CPU de l'Amiga n'était pas le cœur de l'ordinateur. Le CPU permettait le fonctionnement en effectuant quelques opérations mais c'est l'ensemble de la machine avec
les circuits Denise, Lisa, Agnus/ALice, Copper, Blitter avaient tous une ou plusieurs fonctions précises qui faisaient l'ordinateur. Donc, pas de cœur réel. On pouvait même par la prise vidéo prendre le contrôle sur le Quartz interne pour synchroniser l'ordinateur avec les magnétoscopes et faire du genlock (et incrustations d'images).
Le CPU obéissait comme un coprocesseur.
Le Blitter ne savait faire que 3 opérations ! Mais travaillait presque tout le temps, en déchargeant le CPU.
The blitter is a sub-component of Agnus. "Blit" is shorthand for "block image transfer" or bit blit. The blitter is a highly parallel memory transfer and logic operation unit. It has three modes of operation: copying blocks of memory, filling blocks (e.g. polygon filling) and line drawing.
The blitter allows the rapid copying of video memory, meaning that the CPU can be freed for other tasks. The blitter was primarily used for drawing and redrawing graphics images on the screen, called "bobs", short for "blitter objects".
La
mémoire CHIP était multi-accès, accessible directement par tous les composants de la machine …
Et c'est pour cela que lire de la musique (puce Paula), pendant le formatage d'une disquette (le floppy disk controler et encore Paula), pendant l'affichage de sprites sur des animations (puces Denise, Blitter et Copper), se faisait à moins de 1% CPU !
En général, la plupart des ordinateurs Amiga n'étaient livrés qu'avec de la Chip RAM. Suivant les caractéristiques du chipset, il était possible d'étendre la mémoire jusqu'à remplir complètement l'espace d'adressage de la Chip RAM. À ce moment, toute mémoire ajoutée était réservée au processeur principal. L'ajout de cette mémoire, permettant au processeur principal de ne plus être bloqué par les accès à la chip RAM, l'ordinateur s'en trouvait accéléré, et tout naturellement on appela cette mémoire de la Fast RAM.
L'Amiga n'était pas en avance sur son temps, ce sont tous les autres qui étaient en retard d'environs 20 ans dans la souplesse, la fluidité et le multitâche.
Les processeurs Motorola étant mieux programmés et optimisés pour Amiga, j'ai obtenu en 2000 une équivalence d'utilisation entre mon Amiga 1200+1230 à 50 MHz, et Windows NT4 à 200 MHz.
Pourtant je rappelle que NT4 n'était pas Dos, rien à voir avec Win 95/98. NT4 tournait déjà mieux que 95/98, mais l'Amiga avec un processeur 4 fois moins rapide en fréquence d'horloge, réagissait à la même vitesse/latence.
L'Amiga était un ordinateur TEMPS-RÉEL dès son apparition en 1985 !