cfl
的作用是出现异常时stack的回滚,而回滚的过程是一级级cfa往上回退,直到异常被catch。
lea
offset
取偏移地址
leave
释放当前子程序在堆栈中的局部变量,使BP和SP恢复成最近一次的ENTER指令被执行前的值。
相当于:mov esp,ebp
pop ebp
movzx
将源操作数取出来,然后置于目的操作数,目的操作数其余位用0填充
test al,al
将设置ZF标记位为0
MCNS
翻转所有位
在Intel语法中:
(UNIX)在AT&T语法中:
AT&T
: 在寄存器名之前需要写一个百分号(%)并且在数字前面需要美元符($)。[]被()替代。AT&T
: 一些用来表示数据形式的特殊的符号
l long(32 bits) w word(16bits) b byte(8 bits)
jz是零标志位置位(1--即为0)时跳转。
jnz与上面相反,是当零标志位置0(0--即不为0)时跳转。
jle/jng:小于等于时跳转,有符号。
jge:大于等于时跳转,有符号数,sf异或of=0
jae:大于等于时跳转,无符号数,cf=0
jbe:小于等于跳转,无符号数。
jnb:大于等于转移,无符号。
jnl:大于等于转移,有符号
jne:不相等时转移
printf(“x”);x为纯字符
x为一个字符时,printf会被优化为putchar
x为字符串带\n时,printf会被优化为puts
AT&G转intel:set disassembly-flavor intel
disas
struct结构体,作为返回
全局变量定: