• <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>
            隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
                目前其實(shí)只能編譯單目運(yùn)算符和return語句,主要是為了看看整個(gè)大框架有沒有錯(cuò)誤。如果沒有發(fā)現(xiàn)錯(cuò)誤的話,其他種類的表達(dá)式和語句的代碼生成很容易加上去。下面是一個(gè)CMinus程序的例子和編譯結(jié)果(匯編):

                CMinus代碼:
            1 int ReturnZero()
            2 {
            3   return 0;
            4 }
            5 
            6 int Negative(int Number)
            7 {
            8   return -+-+-Number;
            9 }

                下面是編譯之后的機(jī)器碼:
             1 000D0000 FF F5            push        ebp  
             2 000D0002 89 E5            mov         ebp,esp 
             3 000D0004 81 EC 0C 00 00 00 sub         esp,0Ch 
             4 000D000A 60               pushad           
             5 000D000B B8 00 00 00 00   mov         eax,0 
             6 000D0010 89 85 FC FF FF FF mov         dword ptr [ebp+FFFFFFFCh],eax 
             7 000D0016 E9 00 00 00 00   jmp         000D001B 
             8 000D001B 61               popad            
             9 000D001C 8B 85 FC FF FF FF mov         eax,dword ptr [ebp+FFFFFFFCh] 
            10 000D0022 89 EC            mov         esp,ebp 
            11 000D0024 8F C5            pop         ebp  
            12 000D0026 C2 00 00         ret         0    
            13 000D0029 FF F5            push        ebp  
            14 000D002B 89 E5            mov         ebp,esp 
            15 000D002D 81 EC 14 00 00 00 sub         esp,14h 
            16 000D0033 60               pushad           
            17 000D0034 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
            18 000D003A F7 D8            neg         eax  
            19 000D003C 89 85 F8 FF FF FF mov         dword ptr [ebp+FFFFFFF8h],eax 
            20 000D0042 8B 85 F8 FF FF FF mov         eax,dword ptr [ebp+FFFFFFF8h] 
            21 000D0048 F7 D8            neg         eax  
            22 000D004A 89 85 F4 FF FF FF mov         dword ptr [ebp+FFFFFFF4h],eax 
            23 000D0050 8B 85 F4 FF FF FF mov         eax,dword ptr [ebp+FFFFFFF4h] 
            24 000D0056 F7 D8            neg         eax  
            25 000D0058 89 85 FC FF FF FF mov         dword ptr [ebp+FFFFFFFCh],eax 
            26 000D005E E9 00 00 00 00   jmp         000D0063 
            27 000D0063 61               popad            
            28 000D0064 8B 85 FC FF FF FF mov         eax,dword ptr [ebp+FFFFFFFCh] 
            29 000D006A 89 EC            mov         esp,ebp 
            30 000D006C 8F C5            pop         ebp  
            31 000D006E C2 04 00         ret         4 

                可以根據(jù)兩個(gè)ret指令來確定函數(shù)邊界。窺孔優(yōu)化沒有做,代碼比較囧。
            posted on 2009-05-17 23:00 陳梓瀚(vczh) 閱讀(2596) 評(píng)論(1)  編輯 收藏 引用 所屬分類: JIT

            評(píng)論:
            # re: JIT腳本引擎:第一個(gè)CMinus程序運(yùn)行成功 2009-05-24 23:37 | SonicLing
            腳本還要進(jìn)行類型檢查嗎?  回復(fù)  更多評(píng)論
              
            久久天天躁狠狠躁夜夜2020老熟妇| 大美女久久久久久j久久| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲精品tv久久久久| 久久这里只有精品首页| 人妻无码久久一区二区三区免费| 人妻少妇久久中文字幕一区二区| 少妇久久久久久被弄高潮| 久久91精品国产91久久户| 久久久久亚洲AV无码去区首| 精品综合久久久久久97| 国产精品青草久久久久婷婷 | 丰满少妇高潮惨叫久久久| 久久久国产精品| 国内精品久久久久影院日本| 久久av免费天堂小草播放| av色综合久久天堂av色综合在| 久久久青草久久久青草| 超级碰碰碰碰97久久久久| 97久久精品人人做人人爽| 久久精品国产色蜜蜜麻豆| 精品久久久久久国产免费了| 九九久久自然熟的香蕉图片| 欧美精品丝袜久久久中文字幕| 国产精品久久久久影院色| 伊人久久大香线蕉av一区| 伊人久久大香线蕉综合热线| 99久久精品无码一区二区毛片 | 大香伊人久久精品一区二区 | 久久久久久久精品成人热色戒| 青青草国产精品久久| 久久男人Av资源网站无码软件| 亚洲精品国产第一综合99久久| 国产免费久久精品丫丫| 一本一道久久精品综合| 久久电影网一区| 久久国产乱子精品免费女| 国产99精品久久| 青青青青久久精品国产h| 久久精品国产亚洲欧美| 久久免费小视频|