Tu peux jeter un coup d'oeil dans le post dé-assemblage... pour le côté obscure
Grosso modo... ça ne marche pas... ça essaie de compiler (et ce n'est pas forcément le meilleur endroit pour poser la question -> un assembleur n'est pas un compilateur...).
La question est très vaste.. voyez. Pas moyen de préciser ce que tu veux savoir ?
Le plus simple (pour les réponses génériques) c'est d'aller jeter un clic du côté de http://fr.wikipedia.org/wiki/Portail:Informatique par exemple
Effectivement, ma question n'est pas clair du tout !
Ce que j'aurais voulu savoir c'est comment un compilateur analyse le code source avant de le compiler
Par exemple on a le code asm suivant à traduire en hexa :
mov eax,1
add eax, 1
mov ebx,eax
D'apres moi et je me trompe certainement
Je dirais que le compilateur va d'abord analyser le premier Mot (Mov) du fichier, il va cherchez la valeur hexa de mov dans ca base de donnée, il va donc stocker cette premiere valeur, va lui attribuer une adresse fictive... Il va ensuite analyser ce qu'il y a apres le mov, etc... etc...
Je me trompe completement ou il y a du vrais la dedans ?
Je suis d'accord avec toi concernant assembleur/compilateur...
Par contre pour l'hexa, tu dit que ca n'a rien à voir, c'est exact oui et non
Mov ne veut rien dire, c'est juste une representation on va dire humaine de 08Bh
Donc si je fait un petit assembleur qui ne connait que 1instructions, je serais obligé d'entrez dans ma base de donnée que MOV=08Bh
Quand mon assembleur lira le fichier, il analysera le premier mot (Mov) et le traduira par la correspondance(08Bh)
Je suis preneur de toutes tes infos et conseil
Mais pour le CPU bin, hex, oct, dec.... ne sont rien. Ce sont des "repésentations" qui ont chacune leurs intérêts : La base dix, parce que nous avons dix doigts etc.
Il me semble que, en fait, Bool demande comment les _Encodeurs_ fonctionnent. C'est déjà plus simple, que la même question au sujet des Assembleurs et des autres Compilateurs...
... Mais, en gros, Bool, la réponse ferait, dans les 1.500 Pages..., ne serait ce que parce qu'il il y a plusieurs types d'Encodeurs... qui "fonctionnent" différemment. Par exemple, un premier point important, est de savoir si l'Encodeur est basé sur Table ou sur Code ("Table Driven Encoder" vs "Code Driven Encoder"), et jusqu'à quel point.
Tu peux voir un exemple de chaque, en Open Source, en comparant les Sources de FASM et de RosAsm.
Tu peux aussi voir un exemple de cas mixte, avec le Désassembleur de RosAsm (Ce n'est rien d'autre que l'inverse d'un Encodeur, mais les logiques sont les mêmes...), qui est "Table-Driven", pour les branchemetns du Décodeur, mais où toute la suite des opérations est "Code-Driven", c'est-à-dire, sans rédérences à une Table, entièrement construit sur des execution de comparaisons et de branchements de _Code_.
Ensuite, les avantages et inconvénients de chaque solution, - plus les plans intermédiaires -, ça sort vraiment des possibilités d'une discussions sur un Forum: Trop lourd... :))))
Même un détail très simple, comme celui que tu suspecte, plus haut, en parlant de l'ordre dans lequel l'Encodeur fait son boulot, serait un long chapître dans un bouquin. Par exemple, "non", RosAsm n'analyse pas les paramètres des Instructions après l'analyse des Mnémoniques: Il le fait avant. Oui, FASM le fait après... Etc... quand à expliquer... non merci... :))))
Ben... j'espère pour lui qu'il sait, au moins, ce que c'est qu'une Table, et ce que c'est qu'un bout de Code...
:))))
A partir de là, un Encoder "Table Driven", c'est un Encodeur basé sur des Tables, qui peuvent être des Tables de CheckSums, des Tables de Chaînes, des Tables d'Octets, etc... que l'Encodeur utilise pour identifier les divers composants,.. avant de se brancher sur le(s) traitement(s) approprié(s)...
... alors qu'un Encoder "Code Driven" prend, par exemple, l'instruction "MOV", lit "M" // saute au cas "M" // lit "O" // saute au cas "O" // lit "M" // saute au cas "M" // lit 'Separateur" // Analyse (ou lit les résultat des analyses) les différent Paramètres, et se branche sur le traitement approprié...
On ne peut pas expliquer des choses pareilles dans le détail, ne serait-ce que parce que, justement, il y a trop de... "détails".
:))
C'est pareil pour les avantages et inconvenients:
En théorie, les Encodeurs "Code-Driven" sont plus rapides, et plus faciles côté maintenance, mais... extrèment chiant à écrire. Mais bon, encore une fois, ce n'est pas vraiment un bon sujet de discussion. Juste le genre de sujet ideal pour les clowns qui "écrivent des livres" sans savoir de quoi ils parlent, vu que ceux qui font le boulot, et ceux qui "écrivent des livres"... c'est pas les mêmes!!!...