- 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下载 打赏310.00元 3天前
用户:w178191520
-
21ic下载 打赏310.00元 3天前
用户:小猫做电路
-
21ic下载 打赏310.00元 3天前
用户:zhengdai
-
21ic下载 打赏220.00元 3天前
用户:gsy幸运
-
21ic下载 打赏220.00元 3天前
用户:jh0355
-
21ic下载 打赏210.00元 3天前
用户:jh03551
-
21ic下载 打赏60.00元 3天前
用户:sun2152
-
21ic下载 打赏60.00元 3天前
用户:xuzhen1
-
21ic下载 打赏80.00元 3天前
用户:xzxbybd
-
21ic下载 打赏60.00元 3天前
用户:铁蛋锅
-
21ic下载 打赏60.00元 3天前
用户:liqiang9090
-
21ic下载 打赏20.00元 3天前
用户:方中禾
-
21ic下载 打赏20.00元 3天前
用户:w1966891335
-
21ic下载 打赏30.00元 3天前
用户:玉落彼岸
-
21ic下载 打赏15.00元 3天前
用户:kk1957135547
-
21ic下载 打赏15.00元 3天前
用户:w993263495
-
21ic下载 打赏15.00元 3天前
用户:x15580286248
-
21ic下载 打赏20.00元 3天前
用户:WK520077778
-
21ic下载 打赏25.00元 3天前
用户:hp860629
-
21ic下载 打赏15.00元 3天前
用户:sbfd010
-
21ic下载 打赏10.00元 3天前
用户:严光辉
-
鹏鹏科技 打赏1.00元 3天前
-
21ic小能手 打赏10.00元 3天前
资料:四层无人机飞控打板文件
-
21ic小能手 打赏5.00元 3天前
资料:AD通用3D封装库
-
21ic小能手 打赏5.00元 3天前
资料:DeepSeek使用教程
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏20.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏15.00元 3天前
-
sd-hyc 打赏1.00元 3天前
资料:神州易刻2024最新版
-
柏涵 打赏1.00元 3天前
-
21ic下载 打赏310.00元 3天前
用户:jh0355
-
21ic下载 打赏310.00元 3天前
用户:w178191520
-
21ic下载 打赏210.00元 3天前
用户:gsy幸运
-
21ic下载 打赏210.00元 3天前
用户:zhengdai
-
21ic下载 打赏210.00元 3天前
用户:jh03551
-
21ic下载 打赏110.00元 3天前
用户:liqiang9090
全部评论(0)