stack pointer Clicca QUI per vedere il messaggio nel forum |
ste182 |
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??) |
ste182 |
ok ho trovato la risposta: il compilatore gcc usa la sintassi AT&T, quindi sorgente, destinazione... risolto |
Fego |
appena vedi dei % è at&t |
|
|
|