🔹 C语言代码

int add(int a, int b) {
int result = a + b;
return result;
}
 
int main() {
int x = 10;
int y = 20;
int sum = add(x, y);
return 0;
}

🔹 通用寄存器

EAX 0x00000000
EBX 0x00000000
ECX 0x00000000
EDX 0x00000000

🔹 x86汇编代码

08048400main:
0804840055push ebp
0804840189 e5mov ebp, esp
0804840383 ec 10sub esp, 16
08048406c7 45 fc 0a 00 00 00mov DWORD PTR [ebp-4], 10
0804840dc7 45 f8 14 00 00 00mov DWORD PTR [ebp-8], 20
080484148b 45 f8mov eax, DWORD PTR [ebp-8]
0804841750push eax
080484188b 45 fcmov eax, DWORD PTR [ebp-4]
0804841b50push eax
0804841ce8 2f 00 00 00call add
0804842183 c4 08add esp, 8
0804842489 45 f4mov DWORD PTR [ebp-12], eax
08048427b8 00 00 00 00mov eax, 0
0804842cc9leave
0804842dc3ret
 
08048450add:
0804845055push ebp
0804845189 e5mov ebp, esp
0804845383 ec 04sub esp, 4
080484568b 45 08mov eax, DWORD PTR [ebp+8]
0804845903 45 0cadd eax, DWORD PTR [ebp+12]
0804845c89 45 fcmov DWORD PTR [ebp-4], eax
0804845f8b 45 fcmov eax, DWORD PTR [ebp-4]
08048462c9leave
08048463c3ret

🔹 堆栈状态

ESP → 栈顶指针
堆栈为空

🔹 特殊寄存器

ESP 0x7fff1004
EBP 0x7fff0000
ESI 0x00000000
EDI 0x00000000
EIP 0x08048400
EFLAGS 0x00000000