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

            亚洲va久久久久| 久久天天躁狠狠躁夜夜2020一| 久久一区二区三区免费| 日本免费一区二区久久人人澡| 麻豆成人久久精品二区三区免费| 久久久精品人妻一区二区三区蜜桃| 97久久国产露脸精品国产| 久久久久亚洲av无码专区| 国产免费久久精品丫丫| 久久福利资源国产精品999| 精品综合久久久久久888蜜芽| 国产成人精品久久一区二区三区av| 国产伊人久久| 亚洲乱码精品久久久久.. | 国产高清国内精品福利99久久| 久久中文字幕精品| 国内精品伊人久久久久影院对白| 精品久久久久久久久午夜福利| 一本色道久久88综合日韩精品| 91精品日韩人妻无码久久不卡 | 狠狠色丁香婷婷久久综合五月 | 国内精品久久久久| 伊人久久综合精品无码AV专区| 久久无码一区二区三区少妇| 国产人久久人人人人爽| 香蕉久久av一区二区三区| 久久狠狠爱亚洲综合影院| 久久精品国产2020| 久久狠狠爱亚洲综合影院 | 国产精品久久久久一区二区三区| 久久99精品久久久久子伦| 久久亚洲精品无码AV红樱桃| 日韩精品久久久久久免费| 免费精品久久天干天干| 狠狠色婷婷久久综合频道日韩 | 久久久久久久综合日本| 国内精品久久久久久久涩爱| 久久久久久无码国产精品中文字幕| 久久精品无码av| 99久久免费国产精品特黄| 伊人久久综合精品无码AV专区|