• <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.無(wú)局部變量

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

             

             

             

            b.然后在函數(shù)體一開(kāi)始執(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ù)體一開(kāi)始執(zhí)行了以下代碼之后:

             

             

            push ebp

            mov   ebp,esp

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

            ......

             

             

            也就是說(shuō),跟據(jù)局部變量的多少,臨時(shí)空間的開(kāi)辟是以0x10為增長(zhǎng)量,也許是為了內(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ā) 閱讀(836) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++

            導(dǎo)航

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆分類

            文章分類

            文章檔案

            搜索

            最新評(píng)論

            国产69精品久久久久99尤物| 亚洲日韩欧美一区久久久久我| 久久综合给久久狠狠97色| 伊人久久大香线焦AV综合影院 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 99久久精品免费观看国产| 久久久99精品一区二区| 久久久久亚洲av综合波多野结衣| 精品久久久无码人妻中文字幕豆芽| 91亚洲国产成人久久精品网址| 精品国产99久久久久久麻豆| 青青草原综合久久大伊人精品| 久久乐国产综合亚洲精品| 国产精品丝袜久久久久久不卡| 久久精品国产亚洲AV忘忧草18 | 久久99毛片免费观看不卡| 久久青青色综合| 九九久久精品无码专区| 欧洲成人午夜精品无码区久久| 亚洲国产成人精品91久久久 | 伊人久久大香线蕉综合影院首页| www亚洲欲色成人久久精品| 97久久国产露脸精品国产| 激情综合色综合久久综合| 久久国产精品成人免费 | 91精品国产91久久综合| 亚洲国产精品无码久久一线| 午夜精品久久影院蜜桃| 久久99精品九九九久久婷婷| 国产精品久久久久…| 色综合久久综合中文综合网| 97视频久久久| 久久婷婷五月综合国产尤物app| 国产精品内射久久久久欢欢| 国产—久久香蕉国产线看观看| 亚洲国产天堂久久综合网站| 99re久久精品国产首页2020| 久久免费的精品国产V∧| 亚洲成色999久久网站| 久久精品中文闷骚内射| 国内精品久久久久影院优|