欧美亚洲自拍偷拍_日本一区视频在线观看_国产二区在线播放_亚洲男人第一天堂

二維碼
企資網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁 » 企業(yè)資訊 » 科普 » 正文

C_從匯編的角度理解被調(diào)函數(shù)返回不同類型的值給

放大字體  縮小字體 發(fā)布日期:2021-11-22 16:14:41    作者:馮思樂    瀏覽次數(shù):120
導(dǎo)讀

被調(diào)函數(shù)返回不同類型得值給主調(diào)函數(shù),根據(jù)返回值類型得大小,有不同得返回方式。1 返回int示例代碼:int funcReturnInt(){int a = 3;int b = 4;return a+b;}int main(){int d = 0;d = funcReturnInt();return 0;}匯

被調(diào)函數(shù)返回不同類型得值給主調(diào)函數(shù),根據(jù)返回值類型得大小,有不同得返回方式。

1 返回int

示例代碼:

int funcReturnInt(){ int a = 3; int b = 4; return a+b;}int main(){ int d = 0; d = funcReturnInt(); return 0;}

匯編:

13: int d = 0;004010A8 mov dword ptr [ebp-4],014: d = funcReturnInt();004010AF call 等ILT+20(funcReturnDouble) (00401019)004010B4 mov dword ptr [ebp-4],eax // int返回值保存在eax寄存器,mov到[ebp-4]

函數(shù)調(diào)用時:

9: return a+b;00401046 mov eax,dword ptr [ebp-4] // 這里得[ebp-4]是被調(diào)函數(shù)得局部變量a00401049 add eax,dword ptr [ebp-8]

如果是返回指針,也同樣是通過寄存器eax。

2 返回double

示例代碼:

double funcReturndouble(){ double a = 1.1; double b = 2.2; return a+b;}double main(){ double d = 0; d = funcReturndouble(); return 0;}

匯編:

13: double d = 0;00401088 mov dword ptr [ebp-8],00040108F mov dword ptr [ebp-4],014: d = funcReturndouble();00401096 call 等ILT+10(funcReturndouble) (0040100f)0040109B fstp qword ptr [ebp-8] // 浮點(diǎn)棧pop給[ebp-8]

調(diào)用函數(shù)時有一個壓浮點(diǎn)棧操作:

9: return a+b;00401054 fld qword ptr [ebp-8] // 浮點(diǎn)棧push被調(diào)函數(shù)得局部變量a00401057 fadd qword ptr [ebp-10h] // 先前push入得值再加入b

float也是同樣得fstp和fld指令。

3 返回復(fù)合類型

示例代碼:

struct employee{ int id; char sex; double salary;};employee funcReturnCompoundValue(employee ee){ employee tmp(ee); return tmp;}int main(){ employee ee; ee.id=3; ee.sex = 'm'; ee.salary = 5555; employee ef; ef=funcReturnCompoundValue(ee); return 0;}

函數(shù)調(diào)用得匯編代碼:

19: employee ef;20: ef=funcReturnCompoundValue(ee);004010C4 sub esp,10h // 參數(shù)需要16個字節(jié)004010C7 mov eax,esp004010C9 mov ecx,dword ptr [ebp-10h]004010CC mov dword ptr [eax],ecx // 開始壓參004010CE mov edx,dword ptr [ebp-0Ch]004010D1 mov dword ptr [eax+4],edx004010D4 mov ecx,dword ptr [ebp-8]004010D7 mov dword ptr [eax+8],ecx004010DA mov edx,dword ptr [ebp-4]004010DD mov dword ptr [eax+0Ch],edx004010E0 lea eax,[ebp-40h]004010E3 push eax // 壓入存放返回值得起始地址(被調(diào)函數(shù)棧幀內(nèi))004010E4 call 等ILT+5(funcReturnCompoundValue) (0040100a) // 跳轉(zhuǎn)得同時會壓入返回地址004010E9

開始調(diào)用函數(shù):

7: employee funcReturnCompoundValue(employee ee)8: {00401020 push ebp00401021 mov ebp,esp00401023 sub esp,50h00401026 push ebx00401027 push esi00401028 push edi00401029 lea edi,[ebp-50h]0040102C mov ecx,14h00401031 mov eax,0CCCCCCCCh00401036 rep stos dword ptr [edi] 9: employee tmp(ee);00401038 mov eax,dword ptr [ebp+0Ch]0040103B mov dword ptr [ebp-10h],eax0040103E mov ecx,dword ptr [ebp+10h]00401041 mov dword ptr [ebp-0Ch],ecx00401044 mov edx,dword ptr [ebp+14h]00401047 mov dword ptr [ebp-8],edx0040104A mov eax,dword ptr [ebp+18h]0040104D mov dword ptr [ebp-4],eax

此時得棧幀:

調(diào)用函數(shù)時返回得匯編

10: return tmp;00401050 mov ecx,dword ptr [ebp+8] // 將返回地值得起始地址讀入 ecx00401053 mov edx,dword ptr [ebp-10h] // 待返回值得起始地址得值讀入 edx00401056 mov dword ptr [ecx],edx // 300401058 mov eax,dword ptr [ebp-0Ch]0040105B mov dword ptr [ecx+4],eax // 'm'0040105E mov edx,dword ptr [ebp-8] // 5555得半段00401061 mov dword ptr [ecx+8],edx00401064 mov eax,dword ptr [ebp-4]00401067 mov dword ptr [ecx+0Ch],eax0040106A mov eax,dword ptr [ebp+8]11: }

回到主調(diào)函數(shù):

004010E9 add esp,14h // 參數(shù)16個字節(jié)+4個字節(jié)得存入返回值得起始地址004010EC mov ecx,dword ptr [eax] // eax存儲得是存放返回值得起始地址004010EE mov dword ptr [ebp-30h],ecx // ebp-30 = 下圖得0012FF18004010F1 mov edx,dword ptr [eax+4]004010F4 mov dword ptr [ebp-2Ch],edx004010F7 mov ecx,dword ptr [eax+8]004010FA mov dword ptr [ebp-28h],ecx004010FD mov edx,dword ptr [eax+0Ch]00401100 mov dword ptr [ebp-24h],edx00401103 mov eax,dword ptr [ebp-30h]00401106 mov dword ptr [ebp-20h],eax // ebp-20 = 下圖得0012FF2800401109 mov ecx,dword ptr [ebp-2Ch]0040110C mov dword ptr [ebp-1Ch],ecx0040110F mov edx,dword ptr [ebp-28h]00401112 mov dword ptr [ebp-18h],edx00401115 mov eax,dword ptr [ebp-24h]00401118 mov dword ptr [ebp-14h],eax21: return 0;0040111B xor eax,eax

圖示:

當(dāng)返回復(fù)合類型,需要在主調(diào)函數(shù)得棧幀內(nèi)指定一塊內(nèi)存空間。在被調(diào)函數(shù)得棧幀上,會保存指向主調(diào)函數(shù)存儲返回值得內(nèi)存空間得起始地址。

-End-

 
(文/馮思樂)
免責(zé)聲明
本文僅代表作發(fā)布者:馮思樂個人觀點(diǎn),本站未對其內(nèi)容進(jìn)行核實(shí),請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號

粵ICP備16078936號

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號: weishitui

客服001 客服002 客服003

工作時間:

周一至周五: 09:00 - 18:00

反饋

用戶
反饋

欧美亚洲自拍偷拍_日本一区视频在线观看_国产二区在线播放_亚洲男人第一天堂

        9000px;">

              国产精品网站在线播放| 中文字幕在线观看不卡| 欧美大片日本大片免费观看| 一区二区三区四区蜜桃| 国产精品电影一区二区三区| 美日韩黄色大片| 国产精品77777竹菊影视小说| 欧美在线免费观看亚洲| 亚洲少妇30p| 91丨九色丨黑人外教| 国产拍揄自揄精品视频麻豆| 狠狠久久亚洲欧美| 欧美肥大bbwbbw高潮| 亚洲aⅴ怡春院| 日韩一卡二卡三卡四卡| 极品美女销魂一区二区三区免费| 欧美精品一区二区三区蜜臀| 狠狠色综合播放一区二区| 2023国产精华国产精品| 成人成人成人在线视频| 夜夜亚洲天天久久| 日韩欧美中文一区二区| 国产毛片精品国产一区二区三区| 中文字幕日韩一区二区| 天堂va蜜桃一区二区三区 | 中文字幕中文在线不卡住| av中文字幕亚洲| 亚洲va欧美va国产va天堂影院| 69堂成人精品免费视频| 国产精品77777竹菊影视小说| 亚洲精品国产a久久久久久| 欧美精品欧美精品系列| 国产不卡高清在线观看视频| 夜夜嗨av一区二区三区 | 亚洲男人天堂av| 91精品国模一区二区三区| 国产精品一区二区免费不卡| 中文字幕日韩av资源站| 91精品免费在线| 91香蕉视频mp4| 国产精品一区专区| 五月激情六月综合| 国产精品久久看| 日韩美一区二区三区| 91麻豆免费视频| 国产在线看一区| 亚洲福利视频三区| 亚洲色欲色欲www在线观看| 亚洲精品一区二区三区蜜桃下载| 99久久精品情趣| 狠狠色狠狠色综合日日91app| 亚洲国产欧美在线人成| 亚洲欧洲精品成人久久奇米网| 日韩欧美一区二区视频| 欧美日韩亚洲另类| 色综合天天在线| 粉嫩av一区二区三区粉嫩| 老司机精品视频一区二区三区| 中文字幕亚洲欧美在线不卡| 久久久久国产一区二区三区四区| 久久久久久99精品| 亚洲免费毛片网站| 亚瑟在线精品视频| 日本最新不卡在线| 国产另类ts人妖一区二区| 国产精品18久久久久久vr| 国产不卡在线视频| 97精品电影院| 91精品国产综合久久婷婷香蕉| 日韩三级视频中文字幕| 国产性天天综合网| 亚洲一区在线电影| 亚洲成人av在线电影| 国产高清在线精品| 国产精品综合av一区二区国产馆| 狠狠色综合日日| 国产在线不卡一区| 国产91精品在线观看| 国产成人精品网址| 精品一区在线看| 激情五月播播久久久精品| 国产精品亚洲综合一区在线观看| 粉嫩一区二区三区性色av| 日韩激情视频在线观看| 毛片av中文字幕一区二区| 久久av资源站| 高清av一区二区| av在线不卡免费看| 色av成人天堂桃色av| 欧美一卡在线观看| 欧美一区国产二区| 国产成人精品亚洲日本在线桃色| 成人高清在线视频| 欧美日韩精品欧美日韩精品| 欧美一区日韩一区| 精品不卡在线视频| 亚洲免费在线看| 青青草国产成人99久久| 日韩精品视频网站| 国产精品综合视频| 欧洲一区二区av| 日韩欧美国产综合| 国产精品高清亚洲| 天天色图综合网| 国产激情精品久久久第一区二区| 91在线丨porny丨国产| 欧美日韩五月天| 国产日韩欧美a| 中文字幕中文字幕一区| 天使萌一区二区三区免费观看| 亚洲精品欧美综合四区| 亚洲成人1区2区| 亚洲国产一区在线观看| 国产精品888| 欧美福利一区二区| 日韩一区在线看| 国内精品在线播放| 日韩你懂的在线播放| 午夜久久久久久| 欧美影院一区二区三区| 国产精品国产成人国产三级| 高清在线观看日韩| 久久久久国产精品麻豆ai换脸 | 亚洲精品视频在线观看免费| 国产乱码精品一区二区三区av | 91美女精品福利| 亚洲免费视频中文字幕| 91麻豆福利精品推荐| 亚洲欧洲日韩在线| 91在线观看下载| 一区二区三区四区蜜桃| 欧美午夜片在线看| 蜜臀91精品一区二区三区 | 7777精品伊人久久久大香线蕉的 | 成人app软件下载大全免费| 久久综合九色综合97_久久久| 黄色成人免费在线| 久久看人人爽人人| 国产成人一级电影| 亚洲视频香蕉人妖| 欧美性高清videossexo| 日韩成人午夜精品| 久久精品一级爱片| av一区二区不卡| 亚洲午夜在线观看视频在线| 91精品国产综合久久精品| 毛片av一区二区| 久久色在线观看| 99国产精品视频免费观看| 亚洲国产综合在线| 91精品国产欧美一区二区| 国产麻豆精品在线| 亚洲高清视频中文字幕| 日韩欧美亚洲国产另类| 不卡影院免费观看| 亚洲6080在线| 国产欧美日韩卡一| 欧美日韩一区二区在线观看| 精品一区二区av| 中文字幕在线免费不卡| 欧美日韩国产影片| av在线播放成人| 日韩不卡在线观看日韩不卡视频| 欧美精品一区二区精品网| 不卡的av电影在线观看| 日本免费新一区视频| 亚洲人成在线观看一区二区| 2023国产精华国产精品| 中文字幕日韩欧美一区二区三区| 亚洲一区在线播放| 成人福利视频网站| 亚洲黄一区二区三区| 亚洲男人天堂av| 一区二区三区日韩| 一区二区三区av电影| 亚洲综合激情另类小说区| 亚洲大片精品永久免费| 日韩 欧美一区二区三区| 免费人成在线不卡| 国产在线一区观看| zzijzzij亚洲日本少妇熟睡| 成人美女视频在线看| 成人短视频下载| 色www精品视频在线观看| 色婷婷久久久久swag精品| 激情久久久久久久久久久久久久久久| 亚洲日本欧美天堂| 国产欧美在线观看一区| 日韩一区二区免费视频| 欧美性色黄大片| 在线一区二区三区做爰视频网站| 国产一区二区三区在线观看免费视频 | 日本不卡视频在线| 亚洲综合一二三区| 日本一区二区动态图| 久久老女人爱爱| 久久久久国色av免费看影院| 精品久久久影院| 欧美日韩国产首页| 欧美性猛片xxxx免费看久爱|