Considerate questo codice assembly x86:Dereferenziare un'etichetta in assembly x86
section .data
foo:
mov ebx, [boo]
mov [goo], ebx
goo:
mov eax, 2
mov eax, 3
ret
boo:
mov eax, 4
mov eax, 5
ret
Che cosa sta succedendo qui? Quando rinuncio a [boo]
e mov
a [goo]
cosa esattamente mi sto muovendo lì? Un solo comando? Lo ret
pure?
di follow-up domande:
- Vuol dereferencing un'etichetta darmi un indirizzo? O il codice macchina per il primo comando nell'etichetta?
- Se si tratta di un codice macchina, come può essere più di un comando? Non tutti i comandi sono essenzialmente a 32 bit (anche se non vengono utilizzati tutti i bit)?
- Bottom line -
eax
ha un valore di 3 o 5 alla fine?
Sembra che questo accade a lavorare perché non sono pieno quantità a 32 bit e la l'ultimo byte sarà sempre 0. Questo codice fallirà se si prova qualcosa come mov, eax 0xC000000 – Michael
"recuperare i quattro byte" era quello che stavo cercando. Grazie! –