基本汇编指令详解

基本汇编指令详解

常见寄存器

寄存器16位32位64位
累加寄存器AXEAXRAX
基址寄存器BXEBXRBX
计数寄存器CXECXRCX
数据寄存器DXEDXRDX
堆栈基指针BPEBPRBP
变址寄存器SIESIRSI
堆栈顶指针SPESPRSP
指令寄存器IPEIPRIP

汇编指令mov

movb(8位),movw(16位),movl(32位),movq(64位)

寄存器寻址:movl %eax,%edx eax->edx

立即数寻址 movl $0x123,%edx 数字到寄存器

直接寻址 movl 0x123,%edx 直接访问内存地址数据,edx=*(int32_t*)0x123;

间接寻址 movl(%ebx),%edx %ebx是个内存地址,(%ebx)指的是该地址中的数据,edx=*(int32_t*)ebx;

变地址寻址 movl 4(%ebx),%edx edx=*(int32_t*)(ebx+4);

push pop

函数调用

//建立被调用者函数的堆栈框架
pushl %ebp
movl %esp, %ebp

//拆除框架
movl %ebp, %esp
popl %ebp
ret

push %eax 相当于

subl $4, %esp
//栈顶指针减4
movl %eax, (%esp)
//%eax -> esp 地址

pop %eax相当于

movl (%esp), %eax
addl %4, %esp
//栈顶指针加4

call ret

call 0x12345 相当于

pushl %eip
movl $0x12345, %eip
//当前地址压栈,存入新地址

ret相当于

popl %eip
//栈 -> eip

enter leave

enter相当于

push %ebp
movl %esp, %ebp

leave相当于

movl %ebp, %esp
popl %ebp
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值