青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

學(xué)海苦作舟,書山勤為徑

留下點回憶

常用鏈接

統(tǒng)計

積分與排名

Denoise

English study

Web技術(shù)

數(shù)據(jù)壓縮

一些連接

最新評論

Windows中C函數(shù)是什么?

 

C語言中函數(shù)就是一些代碼的集合,實現(xiàn)相對單一的功能;應(yīng)該有名稱、參數(shù)、返回值。實際上函數(shù)應(yīng)該是能夠從調(diào)用程序中接受輸入,處理一定的邏輯,并最終能返回到調(diào)用程序的一段代碼的集合。

本主要討論windowsC函數(shù)如何實現(xiàn)的;主要包括:函數(shù)調(diào)用約定、參數(shù)傳遞和返回。

調(diào)用約定

Windows中默認(rèn)使用的cdecl調(diào)用約定,又叫C調(diào)用約定(不加任何修飾就是這種約定)。cdecl的調(diào)用約定意味著:

1) 參數(shù)從右向左壓入堆棧

2) 函數(shù)自身不清理堆棧;調(diào)用者負(fù)責(zé)清理,因此這種調(diào)用約定允許參數(shù)不固定

3) 函數(shù)名自動加前導(dǎo)的下劃線

 

例如:函數(shù)

Void TestFun(int a,int b);

等價于:

Void __cdecl TestFun(int a,int b);

 

如果有段代碼調(diào)用上面的函數(shù),例如:

TestFun(1,2);

那么轉(zhuǎn)變?yōu)閰R編的就是:

Push 2

Push 1

Call TestFun

Add esp 8          ;2個參數(shù)

 

假設(shè)esp的指針在調(diào)用函數(shù)之前為20,那么上面代碼行對應(yīng)的esp的值為:

Push 2               ;esp =16

Push 1               ;esp=12

Call TestFun     ;esp=8

Add esp 8          ;esp=20

其中call指令會修改esp的值,即將函數(shù)的返回地址進(jìn)棧。

 

WINAPIstdcallcdecl不同之處TestFun自己修改堆棧;上面函數(shù)的匯編代碼是:

Push 2

Push 1

Call TestFun

 

 

參數(shù)傳遞

C函數(shù)的參數(shù)傳遞都是通過堆棧來進(jìn)行的。還是針對上面的函數(shù)來畫一下堆棧的內(nèi)容:

 

ßESP

返回地址

低地址

1(參數(shù)a

 

2(參數(shù)b

 

 

 

 

高地址

調(diào)用者將參數(shù)ab放到堆棧中;一旦進(jìn)入函數(shù)體,函數(shù)需要讀取這些參數(shù)并進(jìn)行處理。讀取函數(shù)的方式就是通過ESP的偏移來完成。

Mov eax, [esp+4]     ;a的值

Mov ebx,[esp+8]      ;b的值

 

如果在進(jìn)入函數(shù)取參數(shù)之前先要保存某些寄存器,例如:

Push eax

那么esp的基地址發(fā)生了變化就是esp+4,從而取ab的值就變成:

Mov eax,[esp+8]          ;a的值

Mov ebx,[esp+12]        ;b的值

 

函數(shù)返回

函數(shù)返回分為兩個部分:返回值的設(shè)置和返回調(diào)用者的位置。

返回值

一般函數(shù)的返回值都是通過eax這個寄存器傳遞給調(diào)用者的,因此如果函數(shù)有返回值都在eax中。但對于浮點數(shù)使用ST0而不是EAX寄存器。

 

因此函數(shù)體中在RET之前,需要做的是:

MOV EAX, XXX          ;XXX返回值

 

在調(diào)用者中取返回值的做法就是:

MOV [ret], EAX         ;ret存放返回值的變量

如果返回值超過4個字節(jié),高位放在EDX中。

 

函數(shù)返回

對于C約定的函數(shù)返回通過RET來完成。需要做的就是從堆棧中讀取返回地址,然后修改EIP寄存器的位置;ESP的值加4,即從堆棧中把返回值POP出來。

 

對于STDCALL的約定,需要給RET傳遞一個參數(shù),參數(shù)的內(nèi)容為傳遞進(jìn)來的參數(shù)占用堆棧的大小,目的是通過RET指令來修改ESP的棧頂位置;恢復(fù)到調(diào)用前的位置。

 

不管上面約定,最后EIP指向調(diào)用者調(diào)用該函數(shù)的下一行指令。

posted on 2008-10-18 00:07 笨笨 閱讀(1890) 評論(0)  編輯 收藏 引用 所屬分類: 編碼

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            另类激情亚洲| 日韩午夜电影在线观看| 久久国产综合精品| 性欧美videos另类喷潮| 午夜精品久久久久久久99黑人| 亚洲最新合集| 性色av一区二区三区| 久久久久久久久岛国免费| 麻豆成人91精品二区三区| 欧美三级黄美女| 国产深夜精品福利| 亚洲精品日韩精品| 午夜在线一区二区| 欧美国产高清| 亚洲伊人伊色伊影伊综合网| 久久国产精品久久久| 欧美激情一区二区三区高清视频| 欧美午夜一区| 在线精品亚洲| 小黄鸭精品aⅴ导航网站入口| 麻豆精品传媒视频| 亚洲午夜久久久久久久久电影网| 久久精品日韩| 国产精品久久国产三级国电话系列| 国产在线精品二区| 亚洲视频在线观看免费| 久久亚洲精品一区| 亚洲小说欧美另类社区| 老司机亚洲精品| 国产精品福利在线观看网址| 伊人色综合久久天天| 欧美一区二区精品| 夜夜爽av福利精品导航| 欧美激情精品久久久六区热门| 国产精品一区二区在线观看不卡| 亚洲三级观看| 另类图片综合电影| 亚洲综合精品自拍| 欧美激情一区二区三区四区| 国产自产女人91一区在线观看| 亚洲一区二区3| 亚洲国产欧美一区二区三区久久| 亚洲一区二区三区视频播放| 欧美日韩国产亚洲一区| 亚洲日本成人| 欧美va天堂va视频va在线| 亚洲欧美中文日韩v在线观看| 欧美日韩高清区| 亚洲伦理中文字幕| 亚洲二区精品| 欧美肥婆在线| 亚洲日本中文字幕区| 欧美一区二区精品在线| 中文av一区特黄| 亚洲国产专区| 免费短视频成人日韩| 在线成人av.com| 男女精品视频| 欧美成人第一页| 最新中文字幕亚洲| 欧美国产视频一区二区| 久久天天躁狠狠躁夜夜av| 激情一区二区三区| 欧美超级免费视 在线| 久久免费99精品久久久久久| 影音先锋一区| 亚洲国产99| 欧美日韩另类在线| 亚洲综合成人在线| 亚欧成人在线| 在线日韩电影| 亚洲国产精品成人综合色在线婷婷| 免费h精品视频在线播放| 亚洲欧洲精品一区二区精品久久久| 欧美国产另类| 欧美日韩福利| 欧美在线二区| 老司机免费视频一区二区三区| 亚洲美女黄网| 亚洲一级免费视频| 国内成人精品视频| 亚洲高清视频在线观看| 欧美日韩亚洲高清一区二区| 亚洲欧美日本日韩| 久久精品国产综合精品| 亚洲麻豆一区| 亚洲永久在线观看| 激情欧美丁香| 日韩一级在线| 精品51国产黑色丝袜高跟鞋| 亚洲国产日韩欧美一区二区三区| 国产精品久久久久久久久借妻| 久久国产欧美精品| 欧美不卡视频| 久久都是精品| 欧美精品在线一区| 久久久久久久国产| 国产精品激情| 欧美1区免费| 国产精品视频免费在线观看| 免费不卡在线视频| 国产精品美女久久久久久久| 蘑菇福利视频一区播放| 国产精品久久久久久久久免费桃花| 久久久久成人精品| 欧美性猛片xxxx免费看久爱 | 欧美日韩在线不卡一区| 久久精品系列| 国产精品美女久久久久久免费| 欧美成年视频| 国产视频综合在线| 在线亚洲精品| 99国产精品久久久久久久| 美女国内精品自产拍在线播放| 久久久久久久999| 欧美午夜免费影院| 亚洲经典在线看| 精久久久久久| 性欧美1819性猛交| 欧美亚洲综合久久| 欧美三级中文字幕在线观看| 亚洲第一页在线| 雨宫琴音一区二区在线| 香蕉久久夜色精品| 午夜日韩电影| 国产精品久久久久久久一区探花 | 免费成人你懂的| 国产一区二区三区四区五区美女| 亚洲乱码精品一二三四区日韩在线 | 精品动漫一区| 欧美伊人久久久久久午夜久久久久| 亚洲一区二区欧美| 欧美日韩国产色综合一二三四| 亚洲国产另类久久久精品极度| 在线观看欧美成人| 老司机一区二区三区| 亚洲国产成人porn| 日韩一级欧洲| 欧美日韩99| 亚洲天堂成人在线视频| 欧美一级夜夜爽| 激情国产一区| 嫩草国产精品入口| 日韩性生活视频| 亚洲女同同性videoxma| 国产精品综合av一区二区国产馆| 亚洲一区综合| 久久精品一区二区三区不卡牛牛| 国产日产欧美一区| 久久久免费观看视频| 亚洲国产精品福利| 亚洲一区二区三区免费在线观看 | 亚洲无线视频| 久久婷婷丁香| 亚洲日韩视频| 国产精品国产三级国产aⅴ浪潮| 亚洲一区免费网站| 久久婷婷丁香| 中文在线资源观看网站视频免费不卡 | 99re66热这里只有精品4 | 亚洲福利在线视频| 欧美精品 国产精品| 一本色道久久| 久久久.com| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美二区视频| 宅男噜噜噜66一区二区66| 国产精品午夜电影| 男女精品网站| 亚洲专区免费| 欧美国产极速在线| 性欧美18~19sex高清播放| 樱桃成人精品视频在线播放| 欧美精品国产一区| 欧美中文字幕在线观看| 亚洲激情视频在线| 久久青草久久| 亚洲永久免费视频| 在线观看久久av| 国产精品免费一区二区三区在线观看| 久久久久欧美精品| 亚洲一区二区三区四区在线观看| 欧美成人a视频| 欧美在线观看一区二区| 99精品视频免费观看| 狠狠综合久久av一区二区老牛| 欧美日韩日韩| 欧美成人伊人久久综合网| 亚洲欧美综合网| 正在播放亚洲一区| 亚洲高清资源| 美女任你摸久久| 久久精品国产欧美激情| 亚洲一区二区三区免费在线观看 | 欧美激情麻豆| 美脚丝袜一区二区三区在线观看| 亚洲女性裸体视频| 一二三四社区欧美黄| 亚洲激精日韩激精欧美精品| 两个人的视频www国产精品|