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]

Reply via email to