文章目录
栈分布几种寻址方式:
栈分布
Ebp-4 局部变量开始
Ebp +0 原始ebp寄存器值
Ebp+4 返回值
Ebp+8形参1
Ebp+12 形参2
Ebp+16 形参3
局部变量1--->Ebp-4 局部变量开始
原始ebp寄存器值--->Ebp +0 原始ebp寄存器值
返回地址-->Ebp+4 返回值
形参1-->Ebp+8
形参2-->Ebp+12 形参2
打开栈帧:
Push Ebp;
Mov ebp,esp;
Sub esp,40(拉开栈)
几种寻址方式:
立即数寻址: mov eax,1; 寄存器寻址:mov eax,ebx; 存储器寻址:mov eax,[XXX]:(分为以下几种:) 1.寄存器直接寻址:mov eax,[1000]; 2.寄存器间接寻址:mov eax,[ebx]; 3.寄存器相对寻址:mov eax,[ebx+5] 4. 寄存器基址变址寻址:mov eax,[ebx+edi]; 5.寄存器相对基址变址寻址:mov eax,[ebx+edi+5];
调用约定关键字参数入栈顺序回收堆栈
C-调用约定__Cdecl从右至左调用者负责标准调用规范__stdcall从右至左被调用者负责快速调用规范__fastcall从右至左 (使用寄存器传参)被调用者负责Pascal调用规范pascal从左至右被调用者负责