mon code est pas trop mal foutu , je ne devrai pas trop galerer a faire le changement Very Happy
La conception n'a plus rien à voir. a mon avis tu vas pas être déçu
il faut bien que tu comprennes qu'il faut "compilé" la source.
tu ne la compileras pas avec des instructions microprocesseurs , mais des instructions "maison" , la seule différence qu'il y aura avec un véritable exécutable , c'est qu'il ne sera pas exécuter directement par l'OS.
l'avantage :
pas la doc d'intel a se claquer
pas besoin d'apprendre le format PE de windows ou ELF de linux.
plus rapide qu'un simple "interpreteur"
l'inconvénient :
moins rapide qu'un exe "pur" , mais rapide quand même.
Avant de se lancer dans se genre de chose , faut bien comprendre le concept d'execution.
Le petit schéma montre comment doit être disposer se genre de programme.
En tête donne quelque renseignements :
- la taille de l'entête.
- le nombres d' entête de segment.
- la taille des entêtes de segment.
- la position du point d'entré du programme.
les entêtes de segments donne les infos suivantes :
- le point d'entré du segment de code
- la taille du segment de code.
etc...
Regarde le schéma du dessus.
Imagine que l'on exécute notre programme.
La 1° instruction commence à "point d'entré"
ensuite il continue l'exécution
jusqu'à tomber sur un appel de fonction.
une fonction est dans un segment différent.
on consulte donc l'entete ( flêche rouge )
on recherche la bonne entete (flêche verte)
on change de segment ( flêche bleue )
on execute le segment.
Chaque segment possède ses propres tables de variables , ce qui nous donne des variables locale...
le programme possède aussi une table commune à tout les segments , ce qui donne des variables globales.
le schéma est "grossi" pour bien te faire comprendre la tâche que cela implique.
La compilation peut se passer en plusieurs "passe"
ex :
passe 1
Tu énumères toute les fonction , la boucle principale ,
tu créer les segment et les en tête correspondante.
passe 2
pour chaque segment , tu transforme en byte code , le resultat te donne une taille , tu mets à jours les en tête.
Voila , voila , pas simple hein?
