码迷,mamicode.com
首页 > 其他好文 > 详细

函数调用过程

时间:2021-05-24 06:39:06      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:寄存器   函数调用   debug   ima   函数返回值   讲解   height   大于   lazy   

 一.函数调用过程

1.讲解

技术图片   技术图片

VS  debug 打印内存  alt+5

                  打印寄存器  alt+6

2.函数的组成

返回值   函数名(参数)

{

      函数体

}

这节课主要学习:

                           1.函数参数的代入

                            2.函数栈帧的开辟

                            3.函数返回值的代入

                            4.函数栈帧的销毁

cccc..代表烫

1.函数参数入栈

1.4字节

dword代表4字节  

ptr代表地址

技术图片  技术图片  技术图片

 

 

 4字节参数入栈:

                          入栈顺序:从右向左

                          入栈方式:寄存器取值,push入栈

2.8字节

技术图片   技术图片

 

 

 技术图片 技术图片技术图片

 

 

 

 8字节参数入栈:

                          入栈顺序:从右向左

                           入栈方式:寄存器取值,push入栈

 3.12个字节

技术图片  技术图片

 技术图片技术图片

 

 

 

 大于8字节的函数参数传入:

                                            传入方向:从右向左

                                             传入方式:在调用方栈顶开辟空间,将参数存放在调用方的栈顶

2.栈帧的开辟

技术图片 技术图片  技术图片

 

 

 3.返回值

 4字节返回值:使用寄存器将返回值带回

技术图片

 

 

 8字节返回值:使用两个寄存器将返回值带回

技术图片             技术图片

技术图片  技术图片   技术图片

大于8字节的返回值:首先将调用方栈下方的地址进行入栈

                                   返回数据的值存储在调佣方的栈顶

                                   返回之后从调用方栈顶进行取值

技术图片

 加一层ccc,防止写越界

4.栈帧的回退

技术图片技术图片

 

函数调用过程

标签:寄存器   函数调用   debug   ima   函数返回值   讲解   height   大于   lazy   

原文地址:https://www.cnblogs.com/xpei-1124/p/14758980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!