Cpl.Bator a écrit :
@Denis , toi qui est un maitre , que dis-je , un dieu des dieux en prog

, Pour la compilation d'un code source ( hors analyse syntaxique & lexicale , yeu maitrise)
Quelle connaissance faut-il avoir pour créer un petit compilateur ?
Un compilateur doit il être créer en fonction de la marque du processeur ( intel / amd x86 x64 , etc.. ) car chaque proc doit avoir son propre jeu d'instructions , ou ont-ils un standard en commun ?
Heu, tu ne te trompes pas de gars
Je suis juste un amateur, ce que je connais c'est surtout dans les bouquins que je l'ai appris et sur le tas et les forums.
Je n'ai pas la prétention de savoir faire un compilateur mais j'ai écris il y a plus de 15 ans (peut-être plus) un compilateur en Pascal qui transformait un code Pascal en code assembleur pour le pour le processeur 8 bit 6809 de Motorola.
J'ai acheté un bouquin à l'époque qui a été ma bible et qui m'a donné des maux de tête mais comme je suis opiniâtre, le résultat était pas trop mal.
(La programmation par syntaxe, des grammaires à la compilation aux éditions Dunod, de B Groc et M. Bouhier).
Il faut connaitre ou apprendre l'analyse ou les analyses lexicales et syntaxiques.
Les processeurs que tu cites en 32 bits on un jeu d'instructions qui a une forte base commune. Pour le 64 bits, je ne connais pas, je n'ai pas encore de machine 64 bits et c'est pas encore dans mon budget
Après, la traduction directe en code machine est difficilement faisable (le code machine n'est pas l'assembleur, ce sont les valeurs hexadécimale que le processeur va interpréter, il ne connait pas l'assembleur ce brave microprocesseur).
Le bouquin que j'ai dit que habituellement, pour des contraintes algorithmiques, un compilateur produit du code objet, qui n'est pas directement exécutable. Il doit pour cela subir une dernière transformation...
La nécessité de produire du code objet non directement exécutable est essentiellement dûe aux instructions dont les opérandes sont des adresses. En effet, dans un grand nombre de cas, au moment de la production de l'instruction, on ne connaît pas l'adresse à mettre en opérande.
A la place, on produit une instruction contenant une adresse dites non résolue. La résolution de l'adresse sera effectuée par le chargeur ou l'éditeur de liens.
Le sujet est vaste et Fred pourrais te donner des références de bouquins ou de sites, je me souviens qu'il avait abordé ce sujet sur un forum mais je ne souviens plus trop ou.
A+