- 1
- 2
- 3
- 4
- 5
C/C++函数调用的底层汇编
资料介绍
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 |
最新上传
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic下载 打赏310.00元 3天前
用户:小猫做电路
-
21ic下载 打赏310.00元 3天前
用户:gsy幸运
-
21ic下载 打赏310.00元 3天前
用户:liqiang9090
-
21ic下载 打赏310.00元 3天前
用户:zhengdai
-
21ic下载 打赏160.00元 3天前
用户:w1966891335
-
21ic下载 打赏160.00元 3天前
用户:w178191520
-
21ic下载 打赏160.00元 3天前
用户:kk1957135547
-
21ic下载 打赏40.00元 3天前
用户:WK520077778
-
21ic下载 打赏40.00元 3天前
用户:sun2152
-
21ic下载 打赏30.00元 3天前
用户:xuzhen1
-
21ic下载 打赏50.00元 3天前
用户:铁蛋锅
-
21ic下载 打赏30.00元 3天前
用户:xzxbybd
-
21ic下载 打赏40.00元 3天前
用户:z00
-
21ic下载 打赏40.00元 3天前
用户:forgot
-
21ic下载 打赏40.00元 3天前
用户:happypcb
-
21ic下载 打赏20.00元 3天前
用户:zhaoqshan
-
21ic下载 打赏5.00元 3天前
用户:17724187683
-
21ic下载 打赏5.00元 3天前
用户:zmm1818
-
21ic小能手 打赏15.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
chenruiji 打赏1.00元 3天前
资料:血糖仪原理图
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
资料:测试智能语音控制模块
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
cai0603 打赏3.00元 3天前
用户:CJQ_ENJOY
-
21ic小能手 打赏5.00元 3天前
全部评论(0)