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

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

                下面是編譯之后的機器碼:
             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ù)兩個ret指令來確定函數(shù)邊界。窺孔優(yōu)化沒有做,代碼比較囧。
            posted on 2009-05-17 23:00 陳梓瀚(vczh) 閱讀(2610) 評論(1)  編輯 收藏 引用 所屬分類: JIT

            評論:
            # re: JIT腳本引擎:第一個CMinus程序運行成功 2009-05-24 23:37 | SonicLing
            腳本還要進行類型檢查嗎?  回復(fù)  更多評論
              
            狠狠综合久久AV一区二区三区| 亚洲香蕉网久久综合影视| 国产福利电影一区二区三区久久久久成人精品综合| 一本一道久久综合狠狠老| 国产精品久久久久国产A级| AAA级久久久精品无码区| 久久无码AV一区二区三区| 99久久精品午夜一区二区| 久久综合精品国产一区二区三区 | 久久婷婷是五月综合色狠狠| 亚洲一区二区三区日本久久九| 国产精品久久毛片完整版| 久久久久亚洲AV无码专区体验| 国产精品99久久久久久宅男小说| 久久99精品国产| 日本精品久久久久影院日本| 精品综合久久久久久888蜜芽| 久久这里有精品视频| 亚洲成色999久久网站| 久久热这里只有精品在线观看| 久久久久亚洲精品中文字幕| 久久99国产精一区二区三区| 久久亚洲AV成人无码电影| 久久综合鬼色88久久精品综合自在自线噜噜 | 精产国品久久一二三产区区别 | 亚洲国产精品嫩草影院久久 | 一本色道久久综合狠狠躁| 亚洲精品成人久久久| 久久夜色精品国产| 久久青青草原精品国产不卡| 久久99精品久久久大学生| 久久久久精品国产亚洲AV无码| 狠狠88综合久久久久综合网| 亚洲va中文字幕无码久久 | 亚洲欧美伊人久久综合一区二区| 99久久国产宗和精品1上映| 久久五月精品中文字幕| 久久亚洲综合色一区二区三区| 亚洲综合精品香蕉久久网| 伊人情人综合成人久久网小说| 久久国产精品成人免费|