muchener's blogs

汇编学习笔记

字数统计: 378阅读时长: 1 min
2016/11/01 Share

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结构体,作为返回

全局变量定:

CATALOG