寻址模式


寄存器
在 x86 汇编中,有八个 16 位通用寄存器,它们分别是:
- 累加器寄存器 (AX):用于算术运算。将常数与累加器相结合的操作码为 1 字节。
- 基址寄存器 (BX):作为数据指针使用(在分段模式下位于段寄存器 DS 中)。
- 计数器寄存器 (CX):用于移位/旋转指令和循环。
- 栈指针寄存器 (SP):指向堆栈顶部。
- 堆栈基址寄存器 (BP):用于指向堆栈基址。
- 目标索引寄存器 (DI):用作流操作中的目标指针。
- 源索引寄存器 (SI):用作流操作中的源指针。
- 数据寄存器 (DX):用于算术和 I/O 操作。 在 32 位模式下,这个缩写前面加上 ‘E’(扩展)。例如,‘EAX’ 是一个 32 位值的累加器寄存器。类似地,在 64 位版本中,‘E’ 被替换为 ‘R’(寄存器),因此 64 位版本的 ‘EAX’ 称为 ‘RAX’。

pchunter
汇编基础





eax:累加器寄存器,通常用于算术运算。ebx:基址寄存器,可用作通用寄存器。











if

switch


while

for


三种函数调用方式


- ret 使用:地址+8

函数栈帧布局

参数,局部变量的寻址,都是通过EBP栈基地址寄存器的加减操作寻址
esp指向系统栈的最上面一个栈帧的栈顶。- 在函数执行期间,
esp会自动更新,以适应局部变量、参数和其他栈操作。 默认用exa寄存器返回
最后由调用者负责平衡,也就是 esp + 8,指针指回最底部(图错了),3,4自动销毁
结构体用于c++对象内存布局
受字节对齐规则影响,看类内数据类型
若包含虚函数,则有一个虚表指针指向一个虚函数表,表中的每一项都是虚函数的地址,若增加虚函数,则只会影响表中的大小
构造函数,析构函数,虚函数的汇编

