Wie Sie eine assembly-Sprache funktioniert?

Ich Lerne Montage und ich habe diesen Assembler-code, und mit viel Mühe ihn zu verstehen, kann jemand erläutern?

Dump of assembler code for function main:
0x080483ed <+0>:    push   ebp
0x080483ee <+1>:    mov    ebp,esp
0x080483f0 <+3>:    sub    esp,0x10
0x080483f3 <+6>:    mov    DWORD PTR [ebp-0x8],0x0
0x080483fa <+13>:   mov    eax,DWORD PTR [ebp-0x8]
0x080483fd <+16>:   add    eax,0x1
0x08048400 <+19>:   mov    DWORD PTR [ebp-0x4],eax
0x08048403 <+22>:   leave  
0x08048404 <+23>:   ret

Bis jetzt meine verstanden zu wissen, ist die folgende:

Drücken etwas (weiß nicht was) in ebp registrieren. dann verschieben Sie Inhalte von esp registrieren Sie sich in ebp (ich denke, die Daten von ebp überschrieben werden soll), dann subtrahieren 10 von der esp und speichern Sie es in den esp (Die Funktion 10 byte, Das reg wird nie wieder verwendet, also kein Punkt, dies zu tun-Betrieb). Nun weisen Sie den Wert 0 an die Adresse, die Spitzen von 8 bytes weniger als ebp.

Nun speichern Sie diese Adresse in register eax. Nun fügen Sie 1 auf den Wert hingewiesen, die von eax (der Vorherige Wert verloren). Nun speichern Sie die eax Wert auf [ebp-0x4], dann verlassen, um die Rückkehr-Adresse main.

Hier ist mein C-code für das obige Programm:

int main(){

int x=0;
int y = x+1;
}

Nun, kann jemand herausfinden, wenn ich falsch bin nichts,und ich versteh auch nicht, der mov at <+13> es addiert 1, um die addrs ebp-0x8, aber das ist die Adresse von int x so x nicht mehr 0 enthalten. Wo bin ich falsch?

  • Warum nicht abholen eine Anleitung zum Zusammenbau? push ebp nicht schieben etwas in ebp es wird der aktuelle ebp Inhalt auf dem Stapel, so dass Sie später wiederhergestellt werden.
  • Nehmen Sie ein Lesen Sie hier: en.wikibooks.org/wiki/X86_Disassembly/...
InformationsquelleAutor Tamim Addari | 2013-11-25
Schreibe einen Kommentar