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

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>
            一区二区在线不卡| 午夜精品一区二区三区四区 | 国产精品成人免费精品自在线观看| 亚洲午夜久久久久久尤物| 亚洲人成在线播放| 欧美福利电影在线观看| 欧美成年人网| 亚洲欧洲在线视频| 翔田千里一区二区| 久久午夜羞羞影院免费观看| 鲁鲁狠狠狠7777一区二区| 欧美久久久久久久| 日韩视频永久免费观看| 亚洲欧美日韩精品一区二区| 一区二区三区久久| 在线视频你懂得一区| 一本久久知道综合久久| 亚洲欧美电影在线观看| 久久精品一区蜜桃臀影院| 欧美日韩成人一区二区| 国产精品素人视频| 99精品欧美一区| 裸体丰满少妇做受久久99精品| 亚洲国产乱码最新视频| 欧美在线视频日韩| 国产日韩精品入口| 老色鬼久久亚洲一区二区| 狂野欧美一区| 免费欧美在线视频| 亚洲欧美日韩精品| 亚洲色诱最新| 国产精品午夜在线观看| 欧美一区日韩一区| 欧美在线一二三四区| 亚洲乱码一区二区| 欧美日韩国产综合视频在线观看中文 | 欧美四级电影网站| 欧美一区二区三区在线播放| 亚洲欧美综合| 亚洲国产精品电影| 亚洲人午夜精品| 国产精品久久久久久久久久免费 | 亚洲精品日韩综合观看成人91| 欧美国产精品v| 欧美日韩午夜激情| 久久av一区二区三区| 久久青青草原一区二区| 9久re热视频在线精品| 午夜精品美女久久久久av福利| 国产综合欧美在线看| 亚洲另类自拍| 亚洲国产日韩欧美在线动漫| 亚洲精品五月天| 亚洲大胆av| 久久国产成人| 久久久亚洲高清| 国产精品高潮呻吟视频| 亚洲福利视频网站| 久久综合九色九九| 国产视频一区二区在线观看| 亚洲激情综合| 亚洲精品综合在线| 免费成人在线视频网站| 国产精品久久二区| 日韩午夜剧场| 欧美自拍偷拍午夜视频| 一区二区精品| 国产精品你懂的在线欣赏| 亚洲一区二区三区免费观看| 亚洲人成小说网站色在线| 欧美高清在线一区二区| 亚洲美女在线看| 亚洲裸体在线观看| 国产精品视频一| 久久精品中文| 蜜臀av性久久久久蜜臀aⅴ| 亚洲国产精品成人久久综合一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久亚洲影院你懂的| 在线精品在线| 亚洲免费高清视频| 国产精品视频大全| 久久综合九九| 欧美日韩国产va另类| 亚洲欧美国产不卡| 久久精品中文字幕一区| 亚洲成人资源网| 日韩视频在线免费| 国产自产v一区二区三区c| 91久久精品一区二区别| 国产精品视频一区二区三区| 葵司免费一区二区三区四区五区| 欧美福利网址| 欧美专区亚洲专区| 欧美福利精品| 欧美在线观看www| 欧美+亚洲+精品+三区| 亚洲综合精品一区二区| 麻豆成人在线观看| 欧美在线亚洲在线| 欧美激情国产日韩| 欧美资源在线| 国产精品hd| 亚洲电影在线观看| 国产性色一区二区| 99精品热视频| 亚洲人成网站777色婷婷| 亚洲欧美日韩一区二区在线| 亚洲精品欧美日韩| 久久久久高清| 香蕉久久夜色精品国产| 欧美激情在线| 欧美aa国产视频| 国产偷国产偷精品高清尤物| 日韩午夜在线观看视频| 亚洲激情成人网| 久久精品夜色噜噜亚洲a∨| 亚洲欧美国产视频| 欧美日韩1区2区3区| 欧美激情视频一区二区三区免费| 国产一区二区三区黄| 亚洲无限av看| 亚洲自拍三区| 欧美四级在线| 在线视频欧美日韩精品| 亚洲欧洲午夜| 久久久久久久久久久成人| 午夜免费日韩视频| 欧美性猛交xxxx免费看久久久| 欧美激情精品久久久久久| 狠狠狠色丁香婷婷综合久久五月 | 亚洲午夜高清视频| 欧美不卡一区| 亚洲第一偷拍| 亚洲精品久久| 欧美精品在线观看播放| 亚洲国产成人在线| 亚洲日韩成人| 欧美日韩精品一区二区| 亚洲精品在线一区二区| 在线综合+亚洲+欧美中文字幕| 欧美激情亚洲国产| 亚洲精品中文字幕在线| 一区二区三区不卡视频在线观看| 欧美日韩大片| 亚洲一区二区av电影| 亚洲欧美中文字幕| 国产一区高清视频| 久久亚洲春色中文字幕久久久 | 亚洲制服av| 久久不射网站| 91久久久在线| 欧美色视频在线| 午夜精品久久久久久久99水蜜桃 | 亚洲精品一区在线观看香蕉| 99精品热视频| 国产伦精品一区二区| 香蕉久久久久久久av网站| 蜜臀久久久99精品久久久久久| 亚洲大片免费看| 欧美日韩国内| 午夜欧美大尺度福利影院在线看| 久久嫩草精品久久久精品| 亚洲人精品午夜| 国产精品美女主播| 久久久午夜电影| 99视频超级精品| 久久一区激情| 亚洲天堂av高清| 狠狠色丁香婷综合久久| 欧美黄色小视频| 亚洲欧美日韩精品在线| 亚洲福利视频免费观看| 欧美中文在线视频| 亚洲乱码日产精品bd| 国产精品视频网址| 欧美高清视频www夜色资源网| 亚洲新中文字幕| 亚洲欧洲另类国产综合| 久久久久国产免费免费| 亚洲天天影视| 最近看过的日韩成人| 国产欧美亚洲精品| 欧美激情精品久久久久久久变态| 午夜精品久久久久久久男人的天堂| 亚洲高清自拍| 久久一区中文字幕| 性欧美xxxx视频在线观看| 亚洲精品免费网站| 裸体一区二区| 久久久久国色av免费看影院| 日韩视频精品在线| 激情视频一区二区三区| 欧美视频在线观看 亚洲欧| 久久麻豆一区二区| 欧美中日韩免费视频| 亚洲午夜视频在线| 日韩一级精品视频在线观看| 欧美激情视频在线播放 | 亚洲精品视频免费|