跳转
jmp label
call addresss
调用函数先将eip入栈,eip指向函数的地址
esp直接使用栈中的数据
push pop引用堆栈中的数据
程序通常把esp复制到ebp在使用ebp获取call指令之前传递给栈的信息。
function_label:
pushl %ebp
movl %esp , %ebp
<...normal code...>
movl %ebp , %esp
popl %ebp
ret
eflags
0 carry 借位 错位
11 overflow 溢出
2 prtity 奇偶校验
7 sign 符号
6 zero 0标识
跳转指令
ja jae jb jbe
jc jcxz jecxz 进位跳转
je jg jge jl jle jna jnae jnb jnbe
jnc jne jng jnge jnl jnle
jno
jnp
jns
jnz
jo jp jpe jpo js jz
cmp op1 , op2
op2 - op1
jge grater
0标识
movl $30 , %eax
subl $30 , %eax
溢出标志
movl $1 , %eax
movb 0x7f , %bl
addb $10 , %bl
jo overhere
int $0x80
overhere:
movl $0 , %ebx
int $0x80
jz overhere
loop循环指令
loop address 直到ECX为0
loope/loopz 或者没有设置ZF标志
loopne/loopnz 或者设置了ZF标志
AT&T学习笔记汇编之控制指令
原文:http://blog.csdn.net/u011185633/article/details/44858715