Super article..
J’ai travaillé pendant vingt cinq ans dans l’informatique industrielle temps réel, où pour des raisons de coûts, de technologie et surtout de vitesse d’éxécution on écrit les programmes en assembleur.. mais avant , je travaillais dans l’électronique numérique . sur le premier calculo, l’additionneur, c’était un rack avec des cartes équipées de SN7400 ( quatre portes NAND )
C’est fou ce qu’on peut faire avec des programmes de moins de 32 k.. On conduit des processus industriels entiers, avec de la régulation PID, des mesures, du filtrage, des asservissements, de la télécommande et de la télémesure à distance..avec des protocoles évolués..
Bien évidemment à chaque changement de bécane, il faut se reconvertir, les programmes ne sont pas portables, mais on s’y fait très vite..
En assembleur on est pas à la merci d’un compilateur et de ses bibliothèques plus ou moins bien adaptées.. J’en ai fait l’expérience avec un compilateur Fortan après un changement de version du système de développement pour des applis non temps réel.
L’OS n’est pas multiplateforme, il est plus adapté à la bécane et donc plus simple..
En cas de panne ( plantage ) on ne sait pas toujours si celà provient d’un pb hard ou d’un problème soft et on pouvait utiliser les outils de déboggage de la machine.. Idem pour écrire des progs de test du métériel, trop cher pour le jeter..Et sur place , bouit de programme assemblé à la main et rentré aux clés sur le pupitre.
Aujourd’hui je ne me risquerais pas d’écrire un prog en assembleur pour les nouveaux processeurs, il faut déjà un millier de lignes pour initialiser correctement le processeur..
Avec les "pipe" , il faut faire très attention à la vitesse des instructions et les mettre dans le bon ordre, il faut gérer l’hyperthreading et les caches .. chapeau tout de même aux gens qui ont conçu ces nouveaux processeurs et à ceux qui écrivent les compilateurs.. mais je préfère un processeur RISC avec moins d’instructions et en 64 bits..on gagne du temps..
Sans parler du BIOS qui reste tout de même mystérieux et compliqué...
J’aime toujours beaucoup l’assembleur, et il n’y a pas très longtemps, j’ai découvert les "micromodules" avec des processeurs très simples ( de la famille de 8080, 6500 et 68000, qui ont retrouvé une nouvelle jeunesse ( ils représentent une part très importante du marché des processeurs tous confondus.. Ces cartes aujourd’hui possèdent de nombreux interfaces : Ethernet, USB, COM , TOR, entrées analogiques..cartes flash , bluetooth et autres..
Les plus évoluées fonctionnent avec des OS comme Microlinux, plus une couche temps réel, mais je pense que j’aurais plus vite fait de réécrire un OS adapté au problème à gérer que comprendre comment fonctionne un Microlinux et d’adapter les paquetages dont j’aurais besoin pour gérer telle ou telle interface..
La capacité mémoire n’étant pas illimitée, mais suffisante, il n’est pas envisageable d’écrire le programme en C++, mais en est-il besoin.. ? Souvent ce n’est que parce que les gens ne connaissent que les langages évolués..
Cette découverte m’a montré que l’assembleur n’était pas mort, bien au contraire.. et ces micromodules sont bien plus ouverts au niveau des utilisations ( robotique, domotique et intégration dans les équipements électroniques qu’ils ont beaucoup simplifié ) que ne l’est un PC, plus tourné vers la bureautique, le calcul scientifique, le multimédia et le dévelopement.
Autre intéret : une carte 68H11 basique coûte une trentaine d’euros, les plus évoluées comme la Cobra coûtent dans les 300 euros.. de quoi bien s’amuser..
En 8086, je n’ai pas encore trouvé de carte et je me désespérais de trouver un assembleur.. Paraît il que c’était dépassé..
Le PC ne sert plus alors que de plateforme de dévelopement , ce qui coûtait une fortune à l’époque où sont sortis ces premiers processeurs, et donc interdisait leur emploi à usage personnel.. mais je me suis bien vengée avec l’Apple II et un kit de dévelopement en assembleur..
Avec mon PC, je suis très frustrée.. déjà par la multiplicité des langages. Il faut se tapper la doc de QT designer et de Kdevelop..il manque toujours une librairie ou ce n’est pas la bonne version, j’aurais largement eu le temps d’écrire mon prog en assembleur..
En assembleur on structure aussi bien ses programmes, on est sur de l’allocation mémoire, on écrit pas d’instruction inutile..
Il existe aussi l’assemblage optionnel qui permet de n’avoir qu’un seul source et de l’adapter à diverses configutations matérielle, plus l’édition de lien qui permet de découper un gros programme en modules des modules réutilisables. L’assembleur n’est donc pas un truc ringard et aussi rustique qu’on l’entend..
La portabilité des langages évolués n’est pas toujours aussi évidente.. J’ai un Athlon 64 et tout ne marche pas correctement.. Sans parler des dépendances de paquetages, de l’utilisation de paquetages sur d’autres kernel... etc... Ce qui occupe presque à temps complet la plupart des linuxiens, au détriment de la programmation d’applications un peu innovantes.. A part les sites Web, qui se ressemblent de plus en plus..
Si j’écris un prog en langage évolué qui utilise telle librairie, rien est moins sur que demain je disposerais de cette librairie là..
Donc tout n’est pas rose avec les langages évolués....
Ecrire en assembleur assure une réelle indépendance, pour ne pas dire une certaine autonomie.
Dans Grub stage 1 et stage 2 sont écrits en assembleur 8086, ça se lit !Dommage que ça s’arrète là ..
Je poursuis ma lecture...
Merci pour cet article super bien fait qui restera dans mes favoris.
Jacqueline
Répondre à ce message