源码:
int add(int a, int b){
int i;
i = a + b;
return i;
}
int main(){
int x = add(1, 2);
}
汇编代码:
-----------------------------main 函数
_main proc near
var_4= dword ptr -4
argc= dword ptr 8
argv= dword ptr 0Ch
envp= dword ptr 10h
push ebp
mov ebp, esp
push ecx
push 2
push 1
call sub_401000
add esp, 8
mov [ebp+var_4], eax
xor eax, eax
mov esp, ebp
pop ebp
retn
_main endp
--------------------------------foo 函数
sub_401000 proc near
var_4= dword ptr -4
arg_0= dword ptr 8
arg_4= dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_401000 endp
堆栈结构:
低地址
ecx | add函数局部变量 |
sp1 | 指向sp0 |
pc | pc指针,函数返回地址 |
1 | 入栈参数 |
2 | 入栈参数 |
ecx | main函数局部变量 |
sp0 |
高地址