汇编语言指令集32位

 
 

mov 将右操作数复制到左操作数

lea 装入有效地址,用来得到局部变量和函数参数的指针

push 将操作数压到堆栈的栈顶

pop 将堆栈的栈顶弹出到操作数

pushad 将所有的通用寄存器压到堆栈栈顶

popad 将堆栈的栈顶弹出到所有的通用寄存器中

call 调用一个函数,以寄存器和偏移量(e.g. call [eax+32])来调用函数和C++里面的虚函数调用很类似

ret 从一个函数返回,_stdcall调用规范要求如果有返回值,就要将返回值从堆栈的栈顶弹出

leave 是mov ESP、EBP/pop EBP的简写,用来退出函数

add 加 sub 减 inc 递增 dec 递减 mul 无符号整数乘法 imul 有符号整数乘法 div 无符号整数除法 idiv 有符号整数除法

and 逻辑与 or 或 not 逻辑非(使用反码非,将所有的位单独取反) neg 非操作(使用补码非,与乘以-1效果相同) xor 异或

cmp 比较

test 比较操作数的位,使用逻辑与操作。

jmp 无条件跳转

je 如果相等则跳转

jne 如果不相等则跳转

loop 返回到循环的入口,视具体条件而定

nop 空操作

int 引发中断,3号中断调用调试器,它经常被当作不会被调用的指令填充到程序中,从而成为一个特殊的空操作

 

EAX 通用寄存器,记录函数的返回值

EBX 通用寄存器

ECX 通用寄存器,记录指向对象的this指针

EDX 通用寄存器,记录64位函数的返回值的高端字

ESI 内存移动和比较操作的源地址寄存器

EDI 内存移动和比较操作的目标地址寄存器

EIP 指令指针(当前执行代码的位置)

ESP 栈指针(当前栈顶的位置)

EBP 栈基址指针(当前栈的基地址)

EFLAGS 记录比较、算术操作的标志位;有时简写为EFL或EFLGS

CS代码段,SS堆栈段,DS数据段,ES附加段,FS另一附加段,GS另一附加段;FS用来指向线程信息块(TIB)

FPO优化,帧指针省略优化;使用FPO可能导致一个有趣的错误,程序的Debug版本正确运行,Release版本却崩溃,出现这个问题的原因是函数调用与函数声明不匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值