Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi N - Z > Sicurezza
 
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

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate