汇编知识笔记

eip $pc 下一个要执行的指令地址

esp 栈指针

ebp 桢指针

eax,edx,ecx 寄存器需要调用者负责保护(保存),就是通过入栈来保存

ebx,esi,edi 寄存器需要被调用者负责保护(保存)

在x86体系结构上,本运行模块的GOT表首地址始终保存在%ebx寄存器中

 

--------------------------------------------------------------------------------------------------------------

push ebp       //ebp入栈,esp-4

mov ebp,esp  //ebp = esp

and esp,-16   //栈空间16字节对齐

sub esp,32   //esp = esp-32,为栈分配32个字节

mov [esp],eax //把eax的值写入到[esp],前面已经预留了空间(对齐16,预分配32,一共48个字节)

call test //call等价于push eip,jump func_addr     把返回地址入栈,再跳到test函数地址

mov eax,0 //函数返回值

leave //等价于mov esp,ebp  再pop ebp

ret //把返回值出栈,并赋值给eip

------------------------------------------------------------------------------------------------------

 

 

 

转载于:https://my.oschina.net/hudangwei/blog/717647

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值