導覽
近期變更
隨機頁面
新手上路
新頁面
優質條目評選
繁體
不转换
简体
繁體
3.149.29.98
登入
工具
閱讀
檢視原始碼
特殊頁面
頁面資訊
求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。
檢視 函数调用 的原始碼
←
函数调用
前往:
導覽
、
搜尋
由於下列原因,您沒有權限進行 編輯此頁面 的動作:
您請求的操作只有這個群組的使用者能使用:
用戶
您可以檢視並複製此頁面的原始碼。
{| class="wikitable" align="right" |- | style="background: #FF2400" align= center| '''<big>函数调用</big>''' |- |<center><img src=https://p1.ssl.qhimg.com/t01f0b965139c68aa63.jpg width="300"></center> <small>[https://baike.so.com/gallery/list?ghid=first&pic_idx=1&eid=2151920&sid=2276849 来自 网络 的图片]</small> |- |- | align= light| |} '''函数调用''',计算机编译或运行时,使用某个函数来完成相关命令。对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。 =='''简介'''== 在[[程序]]中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。 C语言中,函数调用的一般形式为: 函数名(实际参数表) 对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。 用户空间 操作系统的进程空间可分为用户空间和内核空间,它们需要不同的执行权限。其中函数调用运行在用户空间。 =='''评价'''== 指针寄存器 EBP EBP是所谓的帧指针,指向当前活动记录的上方(上一个活动记录的最下方) ESP ESP是所谓的栈指针,指向当前活动记录的最下方(下一个将要插入的活动记录的最上方) 这两个指针的值规定了当前活动记录的位置 参数传递 将函数参数压栈:mov eax,dword ptr [n] ;(n为参数变元) push eax 操作 函数调用将执行如下操作: ⒈将帧指针压入栈中:push ebp ⒉使得帧指针等于栈指针:mov ebp,esp ⒊使栈指针自减,自减得到的内存地址应当能够(足够)用来存储被调用函数的本地状态:sub esp,0CCh 注意:0CCh为0xCC,随着具体函数的不同而不同。 传入保存状态 push ebx ;保存ebx寄存器的值 push esi ;保存esi寄存器的值 push edi ;保存edi寄存器的值 装入edi lea edi,[ebp-0CCh] ;0cch是当前活动记录的大小。 EDI是目的变址寄存器。 恢复传入的保存状态 00411417 pop edi 00411418 pop esi pop ebx 栈指针上移,恢复空间 add esp,0CCh 函数返回释放空间 当函数返回时,编译器和硬件将执行如下操作: ⒈使栈指针等于帧指针: mov esp,ebp ⒉从栈中将旧的帧指针弹出: pop ebp ⒊返回:ret<ref>[https://baijiahao.baidu.com/s?id=1742779983682191847&wfr=spider&for=pc 函数调用]搜狗</ref> =='''参考文献'''== [[Category:312 電腦科學]]
返回「
函数调用
」頁面