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

Dict.CN 在線詞典, 英語學習, 在線翻譯

學海苦作舟,書山勤為徑

留下點回憶

常用鏈接

統計

積分與排名

Denoise

English study

Web技術

數據壓縮

一些連接

最新評論

Windows中C函數是什么?

 

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

本主要討論windowsC函數如何實現的;主要包括:函數調用約定、參數傳遞和返回。

調用約定

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

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

2) 函數自身不清理堆棧;調用者負責清理,因此這種調用約定允許參數不固定

3) 函數名自動加前導的下劃線

 

例如:函數

Void TestFun(int a,int b);

等價于:

Void __cdecl TestFun(int a,int b);

 

如果有段代碼調用上面的函數,例如:

TestFun(1,2);

那么轉變為匯編的就是:

Push 2

Push 1

Call TestFun

Add esp 8          ;2個參數

 

假設esp的指針在調用函數之前為20,那么上面代碼行對應的esp的值為:

Push 2               ;esp =16

Push 1               ;esp=12

Call TestFun     ;esp=8

Add esp 8          ;esp=20

其中call指令會修改esp的值,即將函數的返回地址進棧。

 

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

Push 2

Push 1

Call TestFun

 

 

參數傳遞

C函數的參數傳遞都是通過堆棧來進行的。還是針對上面的函數來畫一下堆棧的內容:

 

ßESP

返回地址

低地址

1(參數a

 

2(參數b

 

 

 

 

高地址

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

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

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

 

如果在進入函數取參數之前先要保存某些寄存器,例如:

Push eax

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

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

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

 

函數返回

函數返回分為兩個部分:返回值的設置和返回調用者的位置。

返回值

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

 

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

MOV EAX, XXX          ;XXX返回值

 

在調用者中取返回值的做法就是:

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

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

 

函數返回

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

 

對于STDCALL的約定,需要給RET傳遞一個參數,參數的內容為傳遞進來的參數占用堆棧的大小,目的是通過RET指令來修改ESP的棧頂位置;恢復到調用前的位置。

 

不管上面約定,最后EIP指向調用者調用該函數的下一行指令。

posted on 2008-10-18 00:07 笨笨 閱讀(1897) 評論(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>
            欧美+日本+国产+在线a∨观看| 亚洲人久久久| 久久综合九色综合网站| 久久久国产一区二区三区| 一色屋精品视频免费看| 欧美成人小视频| 欧美精品乱人伦久久久久久| 亚洲午夜精品久久久久久app| 99国产精品久久久久老师| 国产精品国产三级欧美二区| 欧美一区二区三区视频在线 | 亚洲精品一级| 国产精品白丝av嫩草影院| 欧美一区二视频在线免费观看| 久久精品动漫| 亚洲精品日韩在线| 一区二区三区视频在线看| 国产亚洲激情| 欧美激情精品久久久| 欧美三级在线视频| 欧美专区第一页| 美女爽到呻吟久久久久| 亚洲午夜小视频| 欧美一区二区在线看| 亚洲欧洲综合| 亚洲性夜色噜噜噜7777| 在线观看福利一区| 日韩一级精品视频在线观看| 国产精品综合不卡av| 欧美成人国产| 国产精品福利在线观看网址| 久久在线91| 欧美日韩三级电影在线| 久久久久久高潮国产精品视| 欧美激情视频给我| 久久国产精品久久精品国产| 欧美国产日韩精品免费观看| 欧美一区二区三区视频免费播放| 牛夜精品久久久久久久99黑人| 亚洲欧美99| 美女91精品| 午夜天堂精品久久久久| 麻豆精品视频| 欧美影院视频| 欧美精品www| 久久免费观看视频| 欧美日韩一区二区欧美激情| 久久色中文字幕| 欧美网站在线| 欧美国产亚洲另类动漫| 国产精品揄拍500视频| 亚洲国产va精品久久久不卡综合| 欧美午夜不卡在线观看免费| 欧美大片国产精品| 国产欧美一区二区三区久久| 亚洲人成网站在线播| 狠狠色狠狠色综合日日五| 一区二区高清在线| 亚洲欧洲一区二区三区久久| 先锋影音国产一区| 亚洲桃花岛网站| 美女尤物久久精品| 久久成人国产| 欧美体内she精视频在线观看| 欧美成人精品一区| 国产精品久久久久久久久婷婷| 欧美成人精品高清在线播放| 国产午夜一区二区三区| 99v久久综合狠狠综合久久| 亚洲国产精品一区在线观看不卡 | 亚洲免费观看高清完整版在线观看熊 | 亚洲最黄网站| 久久青草福利网站| 欧美中文字幕视频在线观看| 欧美精品乱码久久久久久按摩| 老巨人导航500精品| 国产欧美日韩视频| 一区二区高清视频在线观看| 日韩亚洲欧美精品| 免费成人av在线| 久久亚洲精品中文字幕冲田杏梨| 国产精品私人影院| 一区二区三区四区五区精品| 亚洲乱亚洲高清| 老司机67194精品线观看| 久久久久久久网| 国产精品影音先锋| 亚洲午夜一区二区| 亚洲一区二区三区在线视频| 欧美精品国产| 亚洲国产一二三| 亚洲经典三级| 免费亚洲电影| 美女视频一区免费观看| 韩国久久久久| 欧美一区网站| 久久九九热免费视频| 国产精品网曝门| 亚洲一区在线播放| 午夜精品国产精品大乳美女| 欧美区二区三区| 亚洲国产网站| 一级日韩一区在线观看| 欧美精品一区二区视频| 亚洲国产精品久久久久| 亚洲精品国产视频| 欧美插天视频在线播放| 亚洲国产成人精品视频| 亚洲精品一区二区三区四区高清| 欧美v日韩v国产v| 亚洲国产一区在线| 99精品国产在热久久婷婷| 欧美激情亚洲自拍| 亚洲精品乱码久久久久久久久| 夜夜夜久久久| 欧美三级电影大全| 亚洲性感激情| 久久精精品视频| 国产真实乱偷精品视频免| 久久精品电影| 欧美激情91| 日韩午夜精品视频| 欧美精品亚洲| 一本久久青青| 欧美在线视频在线播放完整版免费观看| 国产精品美女久久久免费| 亚洲欧美在线磁力| 久久美女性网| 亚洲日本精品国产第一区| 欧美另类极品videosbest最新版本| 日韩视频三区| 小辣椒精品导航| 黄色一区三区| 欧美www在线| 一区二区三区福利| 久久国产一区| 亚洲国产cao| 欧美精品一区三区在线观看| 国产精品99久久久久久久久| 欧美一区国产二区| 国产亚洲一二三区| 久久躁狠狠躁夜夜爽| 亚洲经典一区| 欧美亚洲视频在线看网址| 国内精品久久久久久久97牛牛| 狼人天天伊人久久| 99成人免费视频| 久久久久久久性| 亚洲精品一区在线| 国产精品久久久久久久久久尿 | 亚洲精品中文字幕在线| 香蕉久久久久久久av网站| 极品尤物一区二区三区| 欧美精品在线视频观看| 亚洲欧美激情四射在线日| 欧美~级网站不卡| 亚洲私拍自拍| 狠狠干成人综合网| 欧美精品网站| 欧美在线视频网站| 亚洲激情一区二区| 香蕉久久精品日日躁夜夜躁| 亚洲福利视频一区| 欧美日韩在线免费视频| 欧美在线播放高清精品| 亚洲激情不卡| 久久精品国产欧美亚洲人人爽| 亚洲黄色性网站| 国产美女扒开尿口久久久| 免费影视亚洲| 亚洲免费视频一区二区| 亚洲第一综合天堂另类专| 亚洲欧美一区二区原创| 国产日韩av高清| 欧美激情一区二区三区蜜桃视频| 校园春色国产精品| 亚洲日本激情| 久久亚洲欧洲| 亚洲欧美成人| 亚洲欧洲在线观看| 国产亚洲一区在线播放| 欧美激情亚洲视频| 久久久久久久综合日本| 亚洲一区二区在线播放| 欧美激情一区二区三区高清视频| 欧美在线免费一级片| 99精品福利视频| 亚洲国产精品电影在线观看| 国产日韩欧美在线一区| 欧美日韩国产免费观看| 久久久青草婷婷精品综合日韩 | 国产综合色精品一区二区三区| 欧美日韩亚洲综合在线| 另类成人小视频在线| 小处雏高清一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在 | 国产免费成人| 欧美极品在线视频| 久久精品成人一区二区三区蜜臀| 洋洋av久久久久久久一区|