stack pointer
Posted by ste182 on 07-06-2013 10:22
ragazzi non capisco una cosa:
in x86 assembler le istruzioni sono del tipo: destinazione, sorgente.
quindi se faccio: mov eax,10 metto il valore 10 in eax.

il problema è:
code:
unsigned long sp(void) { __asm__("movl %esp, %eax"); } void main(void) { printf("0x%x\n", sp()); }


questo serve per ottenere lo stack pointer(ESP), ma come mai l'istruzione è "movl %esp, %eax" ??? se la sintassi è destinazione, sorgente non dovrebbe essere "movl %eax, %esp" così da mettere il valore di esp in eax??(eax non è mica il registro dove vengono depositati anche i valori da ritornare??)
Powered by: vbHome (lite) v3.8 and vBulletin v2.3.1
Copyright © 2000 - 2002 Jelsoft Enterprises Limited