-
Code machine
J'ai regardé la doc présente sur le site http://www.chez.com/pageasm/docs/indep/ins.htm
Et il spécifié à certains endroits :
instruction POP :
code machine :
58+rw
Instruction suivant le mode d'adressage
POP r32
cycles d'horloges :
4
explication :
Pop top of stack into dword register
Mais à quoi correspond le +rw du code machine, ou alors sur certains autre codes machines /0
???
Merci
-
+rw veut dire qu'il y a un Registre de taille Word (2 octets donc) spécifiés dans l'opcode. cad que les registres sont numérotés :
ax : 0
cx : 1
dx : 2
cx : 3
et puis di, si, bp, sp, dont je ne connait pas l'ordre.
Et tu ajoutes la valeur correspondant au registre a l'opcode de l'instruction. Exemple explicite :
pop ax ; opcode 58 + 0 = 58
pop dx ; opcode 58 + 2 = 60
Pour le /0 c'est plus difficile. Moi non plus au départ j'avais rien compris a sa traduction pour expliquer le /digit, mais t'inquiete pas dans l'original c'est pas mieux. En fait, (mais la je vais peut etre pas etre clair) souvent dans les instructions qui utilises r/m (style mov bx, 3, ou mov [esp], 4) cad les instructions qui peuvent utiliser un registre (r) ou la mémoire (m) il y a un octet qui suit pour dire quel registre ou quelle adresse en mémoire. C'est un peu compliqué, il faut trtouver une doc qui explique comme est codé cet octet. Mais il y a trois bits qui sont consacrés uniquement a decrire un registre. Et dans les instructions du type
instruction r/m, immediate
on a plus besoin de ses trtois bits alors on y stocke l'extension de l'opcode. Si ty as marqué /3 en face d'une instruction ca veut dire que ces trois bits formeront une valeur dee 3. donc pour /0 les trois bits seront a 0.
-
Merci bien pour ta réponse Blustuff
tu m'apprends des choses