• <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精品综合国产首页| 成人精品一区二区久久| 久久夜色精品国产噜噜麻豆| 久久精品国产99久久久| 精品久久久久久无码国产| 欧美久久天天综合香蕉伊| 国产精品99久久99久久久| 久久精品亚洲福利| 日本强好片久久久久久AAA | 久久久久久久波多野结衣高潮| 久久综合狠狠综合久久综合88| 91精品国产色综久久| 亚洲国产精品无码久久久蜜芽| 国产高清国内精品福利99久久| 日韩人妻无码精品久久久不卡 | 久久亚洲私人国产精品| 国内精品久久久久久久久| 久久亚洲私人国产精品| 模特私拍国产精品久久| 天天综合久久久网| 久久国产色AV免费观看| 一本一道久久综合狠狠老| 久久久久国产精品嫩草影院| 欧美久久综合性欧美| 久久ZYZ资源站无码中文动漫 | 一本一本久久a久久综合精品蜜桃 一本一道久久综合狠狠老 | 精品国产综合区久久久久久| 久久婷婷五月综合97色| 99精品久久久久久久婷婷| 无码任你躁久久久久久老妇App| 国内精品伊人久久久久影院对白 | 97精品伊人久久久大香线蕉| 日韩中文久久| 香蕉aa三级久久毛片| 一本久久a久久精品综合香蕉| 久久嫩草影院免费看夜色| 久久e热在这里只有国产中文精品99 | 性欧美大战久久久久久久久| 久久人人爽爽爽人久久久| 午夜精品久久久久久久| 国产亚洲综合久久系列|