推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

C/C++函数调用的底层汇编

更新时间:2019-10-30 20:59:45 大小:368K 上传用户:xuzhen1查看TA发布的资源 标签:C++ 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

C/C++函数调用的底层汇编

1,运行时栈

1.1 PUSH和POP对栈的操作一般用到两个寄存器:ESP和EBP,还有一个与栈相关的寄存器是ss,在保护模式下它存放的是段选择器,用户模式程序不应该对其进行修改。ESP寄存器存放指向栈特定位置的一个32位偏移,它一般指向栈顶。而EBP一般指向栈底。

应该记住栈是向下增长的!!

在进行PUSH操作时,首先把ESP向下移动一个位置,然后再把值存放到ESP所指向的内存区。

如:PUSH 000000A相当于把ESP减4,再把值压入栈内:mov[ESP-4],000000Ah

1.2 CALL和RET CALL指令指示处理器在新的内存地址执行指令,以实现对过程的调用。在过程中使用RET指令使处理器返回到程序调用过程的地方继续执行。从

底层细节角度来讲,CALL,指令将返回地址压入堆栈(即CAL指令的下一条指令)并将被调用过程的地址拷贝到指令寄存器中。当程序返回时,RET指令从堆栈中弹出地址并送到指令寄存器中。CPU总是执行指令指针寄存器EIP所指向的内存地址处的指令。

假设在main中,CALL语句位于偏移00000020处,通常CALL指令的机器码需要5字节,因此下一条指令(下面的例子中是一条MOV指令)位于偏移0000025处:


部分文件列表

文件名 大小
CC++函数调用的底层汇编.pdf 368K

部分页面预览

(完整内容请下载后查看)

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载