mov-Anweisungen & Register - Verwirrung !

Lese ich "Computer Systems: A Programmer 'Perspektive", in Kapitel 3 erläutert mov Anleitung und Erklärung geben, in einem Buch die mich verwirrt.

geben Sie eine Funktion (Seite 142 1 s edition)

int exchange( int *xp, int y)
{
    int x = *xp;
    *xp = y;
    return x;
} 

Assembler-code der Funktion, den Körper

movl 8(%ebp), %eax  //Get xp  
movl 12(%ebp), %edx //Get y  
movl (%eax), %ecx   //Get x at *xp  
movl %edx, (%eax)   //Store y at *xp  
movl %ecx, %eax     //Set x as return value

Was mich verwirrt, ist, was gespeichert werden soll, und wo

Hier ist, wie ich dies verstehen:

movl 8(%ebp), %eax  //Get xp  

CPU bewegt +8 Byte in den stack(von frame-pointer %ebp), nimmt der Wert gespeichert, der an dieser Stelle, und speichert diesen Wert in das register %eax(zu Schwerpunkt - speichert den Wert, nicht die Adresse)

Hab ich Recht ?
Danke !

InformationsquelleAutor newprint | 2010-11-04
Schreibe einen Kommentar