Le Samedi 21 Juillet 2001 18:47, Le Bot Jean-Michel a écrit :
> Je suis en train de lire le livre de Linus Torvalds (Il était une fois
> Linux, éditions OEM). Le père de notre OS favori y raconte comment dans la
> première moitié des années 80, avec son Commodore Vic-20 puis son Sinclair
> QL, il programmait en langage assembleur voire même en langage machine
> (alors que C existait déjà, cf. p. 71) !!!
C'était tout à fait courant à l'époque avec des machines lentes (ex perso ma
prémiére machine : Z80 1Mhz, 64K de mémoire, stockage des programmes sur PROM
car le lecteur de cassette n'était pas fiable), les compilateurs étaient
chers et encombrants dans le cas de petites configurations. Sur un Apple II,
il fallait jongler avec les disquettes pour compiler 1 programme pascal UCSD.
Les compilateurs se sont répandus avec l'apparition des disques durs.
> Question : est-ce que ce genre de chose est toujours possible aujourd'hui ?
> Puis je écrire "Bonjour Monde" dans une console en le programmant
> directement en langage assembleur voire en langage machine ? Si oui comment
> ?
> (C'est l'expérience historique qui m'intéresse, un peu comme celle de Thor
> Heyerdhal traversant le Pacifique avec le Kon-Tiki pour essayer de
> comprendre comment ce fut possible des siècles auparavant).
> Alors, si quelqu'un sait... merci d'avance
Bonjour,
Voici quelques éléments de réponse :
Le langage assembleur demande une connaissance précise de l'architecture du
processeur cible (fonctionnement des registres, des interruptions, de
l'adressage,..).
La synthaxe est spécifique à chaque famille de processeur ( Motorola, Intel,
ARM, etc..) avec des séries d'instructions spécifiques à une
sous-famille (ex: MMX sur Pentium).
A cause de cela un programme optimisé pour un pentium ne pourra pas être
assemblé en 386 puisque certaines instructions seront inconnues et encore
moins sur un motorola puisque le language est complétement différent.
L'idée est donc d'utiliser un langage de plus haut niveau indépendant de la
machine de type c, le compilateur se chargeant de générer le code assembleur
nécessaire à l'architecture utilisée.
A titre d'exemple :
-Créer un directory essc
- y créer le fichier bonjour.c contenant les 5 lignes suivantes:
#include <stdio.h>
void main()
{
printf("Bonjour monde.\n");
}
- compiler avec : gcc bonjour.c -o bonjour
- lancer le programme généré avec : ./bonjour
-pour voir le code assembleur nécessaire faire un : gcc -S bonjour.c
- éditer le fichier bonjour.s
Amicalement.
--
JB JACQUET
[EMAIL PROTECTED]