dieses Stück Code Gegeben:Basiszeiger und Stapelzeiger
swap:
push ebp ; back up the base pointer,
mov ebp, esp
; push the context of the registers on the stack
push eax
push ebx
push ecx
push edx
mov eax, [ebp+8] ; address of the first parameter
mov ebx, [ebp+12] ; address of the second parameter
mov dl, [eax]
mov cl, [ebx]
mov [eax], cl
mov [ebx], dl
; restore the context of the registers from the stack
pop edx
pop ecx
pop ebx
pop eax
; restore the ebp
pop ebp
ret
(Dies ist nur die Methode Zuvor geschoben wir den ersten und den zweiten Parameter auf dem Stapel..)
Meine Frage ist: Warum fügen wir dem Basiszeiger 8 hinzu, um zur Adresse des ersten Parameters und dann zu 12 zu gelangen?
Ich bekomme die Tatsache, dass sie dword sind, so dass jeder von ihnen 4 Bytes..so von ebp + 8 bis ebp + 12 macht es Sens zu machen. Aber warum ist der erste ebp + 8? Denn wenn ESP auf den TOP des Stacks zeigt, mov ebp, bedeutet esp, dass EBP auf den TOP des Stacks zeigt. Dann drücken wir 4 Werte auf den Stack: eax, ebx, ecx und edx. Warum zeigt EBP + 8 auf den ersten Parameter?
+1 - Einfach, sauber und informativ. – Cyclonecode
Wow schön sauber! Danke das war sehr hilfreich! Ich denke, der entscheidende Punkt war, dass der Stack nach unten wächst! Gut zu wissen ! Du hast meinen Tag gerettet. – yhcowboy