常见汇编指令及范例解释

有两种汇编格式:Intel汇编和AT&T汇编,前者常用于Windows,后者常用于Unix,是GNU汇编器的缺省格式,本文介绍后者(AT&T汇编格式)。

1,常用指令及解释

movl %eax, %edx  ---   数据传递,%eax地址传递给%edx

pushl %eax  --- 入栈,分两步:subl $4, %esp(栈向低地址方向增长) + movl %eax, (%esp)

popl %eax --- 出栈,分两步:movl (%esp), %eax + addl $4, %esp 

addl $8, %eax --- 

subl $4, %esp --- 

enter --- 进入函数,分两步:pushl %ebp + movl %esp, %ebp(将栈顶地址复制给栈基址,当前栈变为空)

leave --- 退出函数,分两步:movl %ebp, %esp + popl %ebp

call 0x12345 --- push %eip + movl 0x12345, %eip(%eip存放下一条执行指令)

ret --- call的逆操作,相当于popl %eip


2,传输字节数

movb         8bit

movw        16bit

movl          32bit

movq         64bit


3,程序实例

int g(int x){
  return x + 10;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值