• <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>

            yehao's Blog

            Cdecl/stdcall函數(shù)調(diào)用內(nèi)存模型(gcc 3.4.5)

            Cdecl/stdcall在不同的編譯器下實(shí)現(xiàn)有會(huì)所有不同,本人是在gcc 3.4.5下測(cè)試的。

             

            1.無局部變量

            a.剛進(jìn)入函數(shù)時(shí):

             

             

             

            b.然后在函數(shù)體一開始執(zhí)行了以下代碼之后:

             

            push ebp

            mov   ebp,esp

            sub   esp,0x8

            ......

             

             

            c.函數(shù)末尾執(zhí)行:

             

            leave

            ret

            Leave其實(shí)就是使ESP+0xc,更通用一些就是EBP+0x4,ESP指向Ret EIP,然后返回,最后由函數(shù)的調(diào)用者清理堆棧,如果是stdcall的話,則在函數(shù)內(nèi)執(zhí)行清理堆棧操作,再執(zhí)行返回操作。

             

            2.有N個(gè)int型局部變量

             

             

            a.剛進(jìn)入函數(shù)時(shí):

             

             

             

             

            b.然后在函數(shù)體一開始執(zhí)行了以下代碼之后:

             

             

            push ebp

            mov   ebp,esp

            sub   esp,( MIN(X)*0x10+0x8 );滿足:MIN(X)*0x10>=N*0x4

            ......

             

             

            也就是說,跟據(jù)局部變量的多少,臨時(shí)空間的開辟是以0x10為增長量,也許是為了內(nèi)存對(duì)齊吧,而且不同的編譯器實(shí)現(xiàn)也不一樣.比如有5個(gè)int型臨時(shí)變量則sub esp,0x28;8個(gè)int型臨時(shí)變量也是sub esp,0x28;到有9個(gè)int型臨時(shí)變量則為sub esp,0x38

             

             

             

             

              

             

             

             

            c.在函數(shù)末尾執(zhí)行:

             

            leave

            ret

            Leave其實(shí)就是使ESP+( MIN(X)*0x10+0x8 )+0x4,更通用一些就是EBP+0x4,ESP指向Ret EIP,然后返回,最后由函數(shù)的調(diào)用者清理堆棧,如果是stdcall,則在函數(shù)體內(nèi)作堆棧清理,再執(zhí)行返回操作。

            http://blog.csdn.net/ggggfjeicfh/article/details/5003398

            posted on 2012-02-29 17:18 厚積薄發(fā) 閱讀(827) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++

            導(dǎo)航

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆分類

            文章分類

            文章檔案

            搜索

            最新評(píng)論

            亚洲一区精品伊人久久伊人| 99久久中文字幕| 久久精品国产亚洲av水果派| 久久亚洲AV成人无码国产| 欧美一区二区精品久久| 国产成人综合久久久久久| 亚洲精品tv久久久久久久久久| 亚洲精品无码专区久久同性男| 囯产极品美女高潮无套久久久| 久久永久免费人妻精品下载| 色综合久久久久| 一级a性色生活片久久无少妇一级婬片免费放 | 国产精品99久久精品爆乳| 伊人久久一区二区三区无码| 精品免费tv久久久久久久| 久久久久99精品成人片欧美| 精品99久久aaa一级毛片| 国内精品久久久久伊人av| 免费无码国产欧美久久18| 国产精品成人无码久久久久久| 久久精品国产2020| 精品多毛少妇人妻AV免费久久| 国产精品久久久天天影视| 国产成人精品综合久久久久| 久久久久无码精品| 久久一本综合| 四虎影视久久久免费| 欧美一级久久久久久久大片| 丁香五月网久久综合| 久久久久亚洲AV无码麻豆| 2021最新久久久视精品爱| 色诱久久av| 一本色道久久88综合日韩精品| 久久久中文字幕日本| 久久久久久无码国产精品中文字幕| 91精品观看91久久久久久| 亚洲国产成人久久精品动漫| 国产精品美女久久久久网| 久久精品无码专区免费青青| 久久ww精品w免费人成| 国产精品一区二区久久|