• <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
                雖然CMinus到中間指令的代碼是精心控制的,但是中間指令到x86的代碼卻是很隨意寫出來的?,F在看來用窺孔優化只是一種治標不治本的方法。打算在CMinus整個都完成了之后,將中間指令到x86的代碼生成那部分重寫,使用一種廣為人知的寄存器分配算法來做。下面是冒泡排序的程序:

                CMinus代碼:
             1 void BubbleSort(int* Input , int Count)
             2 {
             3   int i=0;
             4   while(i<Count-1)
             5   {
             6     int j=Count-2;
             7     while(j>=i)
             8     {
             9       if(Input[j]>Input[j+1])
            10       {
            11         int Temp=Input[j];
            12         Input[j]=Input[j+1];
            13         Input[j+1]=Temp;
            14       }
            15       j-=1;
            16     }
            17     i+=1;
            18   }
            19 }

                下面是生成的x86指令:
              1 0072103A FF F5            push        ebp  
              2 0072103C 89 E5            mov         ebp,esp 
              3 0072103E 81 EC C0 00 00 00 sub         esp,0C0h 
              4 00721044 60               pushad           
              5 00721045 B8 00 00 00 00   mov         eax,0 
              6 0072104A 89 85 58 FF FF FF mov         dword ptr [ebp+FFFFFF58h],eax 
              7 00721050 B8 01 00 00 00   mov         eax,1 
              8 00721055 89 C2            mov         edx,eax 
              9 00721057 8B 85 0C 00 00 00 mov         eax,dword ptr [ebp+0000000Ch] 
             10 0072105D 29 D0            sub         eax,edx 
             11 0072105F 89 85 48 FF FF FF mov         dword ptr [ebp+FFFFFF48h],eax 
             12 00721065 8B 85 48 FF FF FF mov         eax,dword ptr [ebp+FFFFFF48h] 
             13 0072106B 89 C2            mov         edx,eax 
             14 0072106D 8B 85 58 FF FF FF mov         eax,dword ptr [ebp+FFFFFF58h] 
             15 00721073 31 C9            xor         ecx,ecx 
             16 00721075 39 D0            cmp         eax,edx 
             17 00721077 0F 9C F9         setl        cl   
             18 0072107A 89 C8            mov         eax,ecx 
             19 0072107C 88 85 4C FF FF FF mov         byte ptr [ebp+FFFFFF4Ch],al 
             20 00721082 31 C0            xor         eax,eax 
             21 00721084 8A 85 4C FF FF FF mov         al,byte ptr [ebp+FFFFFF4Ch] 
             22 0072108A A9 FF FF FF FF   test        eax,0FFFFFFFFh 
             23 0072108F 0F 84 52 02 00 00 je          007212E7 
             24 00721095 B8 02 00 00 00   mov         eax,2 
             25 0072109A 89 C2            mov         edx,eax 
             26 0072109C 8B 85 0C 00 00 00 mov         eax,dword ptr [ebp+0000000Ch] 
             27 007210A2 29 D0            sub         eax,edx 
             28 007210A4 89 85 5C FF FF FF mov         dword ptr [ebp+FFFFFF5Ch],eax 
             29 007210AA 8B 85 58 FF FF FF mov         eax,dword ptr [ebp+FFFFFF58h] 
             30 007210B0 89 C2            mov         edx,eax 
             31 007210B2 8B 85 5C FF FF FF mov         eax,dword ptr [ebp+FFFFFF5Ch] 
             32 007210B8 31 C9            xor         ecx,ecx 
             33 007210BA 39 D0            cmp         eax,edx 
             34 007210BC 0F 9D F9         setge       cl   
             35 007210BF 89 C8            mov         eax,ecx 
             36 007210C1 88 85 48 FF FF FF mov         byte ptr [ebp+FFFFFF48h],al 
             37 007210C7 31 C0            xor         eax,eax 
             38 007210C9 8A 85 48 FF FF FF mov         al,byte ptr [ebp+FFFFFF48h] 
             39 007210CF A9 FF FF FF FF   test        eax,0FFFFFFFFh 
             40 007210D4 0F 84 E3 01 00 00 je          007212BD 
             41 007210DA B8 04 00 00 00   mov         eax,4 
             42 007210DF 89 C2            mov         edx,eax 
             43 007210E1 8B 85 5C FF FF FF mov         eax,dword ptr [ebp+FFFFFF5Ch] 
             44 007210E7 F7 EA            imul        edx  
             45 007210E9 89 85 4C FF FF FF mov         dword ptr [ebp+FFFFFF4Ch],eax 
             46 007210EF 8B 85 4C FF FF FF mov         eax,dword ptr [ebp+FFFFFF4Ch] 
             47 007210F5 89 C2            mov         edx,eax 
             48 007210F7 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
             49 007210FD 01 D0            add         eax,edx 
             50 007210FF 89 85 48 FF FF FF mov         dword ptr [ebp+FFFFFF48h],eax 
             51 00721105 8B 8D 48 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF48h] 
             52 0072110B 8B 01            mov         eax,dword ptr [ecx] 
             53 0072110D 89 85 50 FF FF FF mov         dword ptr [ebp+FFFFFF50h],eax 
             54 00721113 B8 01 00 00 00   mov         eax,1 
             55 00721118 89 C2            mov         edx,eax 
             56 0072111A 8B 85 5C FF FF FF mov         eax,dword ptr [ebp+FFFFFF5Ch] 
             57 00721120 01 D0            add         eax,edx 
             58 00721122 89 85 48 FF FF FF mov         dword ptr [ebp+FFFFFF48h],eax 
             59 00721128 B8 04 00 00 00   mov         eax,4 
             60 0072112D 89 C2            mov         edx,eax 
             61 0072112F 8B 85 48 FF FF FF mov         eax,dword ptr [ebp+FFFFFF48h] 
             62 00721135 F7 EA            imul        edx  
             63 00721137 89 85 4C FF FF FF mov         dword ptr [ebp+FFFFFF4Ch],eax 
             64 0072113D 8B 85 4C FF FF FF mov         eax,dword ptr [ebp+FFFFFF4Ch] 
             65 00721143 89 C2            mov         edx,eax 
             66 00721145 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
             67 0072114B 01 D0            add         eax,edx 
             68 0072114D 89 85 48 FF FF FF mov         dword ptr [ebp+FFFFFF48h],eax 
             69 00721153 8B 8D 48 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF48h] 
             70 00721159 8B 01            mov         eax,dword ptr [ecx] 
             71 0072115B 89 85 54 FF FF FF mov         dword ptr [ebp+FFFFFF54h],eax 
             72 00721161 8B 85 54 FF FF FF mov         eax,dword ptr [ebp+FFFFFF54h] 
             73 00721167 89 C2            mov         edx,eax 
             74 00721169 8B 85 50 FF FF FF mov         eax,dword ptr [ebp+FFFFFF50h] 
             75 0072116F 31 C9            xor         ecx,ecx 
             76 00721171 39 D0            cmp         eax,edx 
             77 00721173 0F 9F F9         setg        cl   
             78 00721176 89 C8            mov         eax,ecx 
             79 00721178 88 85 48 FF FF FF mov         byte ptr [ebp+FFFFFF48h],al 
             80 0072117E 31 C0            xor         eax,eax 
             81 00721180 8A 85 48 FF FF FF mov         al,byte ptr [ebp+FFFFFF48h] 
             82 00721186 A9 FF FF FF FF   test        eax,0FFFFFFFFh 
             83 0072118B 0F 84 02 01 00 00 je          00721293 
             84 00721191 B8 04 00 00 00   mov         eax,4 
             85 00721196 89 C2            mov         edx,eax 
             86 00721198 8B 85 5C FF FF FF mov         eax,dword ptr [ebp+FFFFFF5Ch] 
             87 0072119E F7 EA            imul        edx  
             88 007211A0 89 85 4C FF FF FF mov         dword ptr [ebp+FFFFFF4Ch],eax 
             89 007211A6 8B 85 4C FF FF FF mov         eax,dword ptr [ebp+FFFFFF4Ch] 
             90 007211AC 89 C2            mov         edx,eax 
             91 007211AE 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
             92 007211B4 01 D0            add         eax,edx 
             93 007211B6 89 85 50 FF FF FF mov         dword ptr [ebp+FFFFFF50h],eax 
             94 007211BC 8B 8D 50 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF50h] 
             95 007211C2 8B 01            mov         eax,dword ptr [ecx] 
             96 007211C4 89 85 60 FF FF FF mov         dword ptr [ebp+FFFFFF60h],eax 
             97 007211CA B8 04 00 00 00   mov         eax,4 
             98 007211CF 89 C2            mov         edx,eax 
             99 007211D1 8B 85 5C FF FF FF mov         eax,dword ptr [ebp+FFFFFF5Ch] 
            100 007211D7 F7 EA            imul        edx  
            101 007211D9 89 85 48 FF FF FF mov         dword ptr [ebp+FFFFFF48h],eax 
            102 007211DF 8B 85 48 FF FF FF mov         eax,dword ptr [ebp+FFFFFF48h] 
            103 007211E5 89 C2            mov         edx,eax 
            104 007211E7 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
            105 007211ED 01 D0            add         eax,edx 
            106 007211EF 89 85 54 FF FF FF mov         dword ptr [ebp+FFFFFF54h],eax 
            107 007211F5 B8 01 00 00 00   mov         eax,1 
            108 007211FA 89 C2            mov         edx,eax 
            109 007211FC 8B 85 5C FF FF FF mov         eax,dword ptr [ebp+FFFFFF5Ch] 
            110 00721202 01 D0            add         eax,edx 
            111 00721204 89 85 50 FF FF FF mov         dword ptr [ebp+FFFFFF50h],eax 
            112 0072120A B8 04 00 00 00   mov         eax,4 
            113 0072120F 89 C2            mov         edx,eax 
            114 00721211 8B 85 50 FF FF FF mov         eax,dword ptr [ebp+FFFFFF50h] 
            115 00721217 F7 EA            imul        edx  
            116 00721219 89 85 4C FF FF FF mov         dword ptr [ebp+FFFFFF4Ch],eax 
            117 0072121F 8B 85 4C FF FF FF mov         eax,dword ptr [ebp+FFFFFF4Ch] 
            118 00721225 89 C2            mov         edx,eax 
            119 00721227 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
            120 0072122D 01 D0            add         eax,edx 
            121 0072122F 89 85 48 FF FF FF mov         dword ptr [ebp+FFFFFF48h],eax 
            122 00721235 8B 8D 48 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF48h] 
            123 0072123B 8B 01            mov         eax,dword ptr [ecx] 
            124 0072123D 8B 8D 54 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF54h] 
            125 00721243 89 01            mov         dword ptr [ecx],eax 
            126 00721245 B8 01 00 00 00   mov         eax,1 
            127 0072124A 89 C2            mov         edx,eax 
            128 0072124C 8B 85 5C FF FF FF mov         eax,dword ptr [ebp+FFFFFF5Ch] 
            129 00721252 01 D0            add         eax,edx 
            130 00721254 89 85 48 FF FF FF mov         dword ptr [ebp+FFFFFF48h],eax 
            131 0072125A B8 04 00 00 00   mov         eax,4 
            132 0072125F 89 C2            mov         edx,eax 
            133 00721261 8B 85 48 FF FF FF mov         eax,dword ptr [ebp+FFFFFF48h] 
            134 00721267 F7 EA            imul        edx  
            135 00721269 89 85 4C FF FF FF mov         dword ptr [ebp+FFFFFF4Ch],eax 
            136 0072126F 8B 85 4C FF FF FF mov         eax,dword ptr [ebp+FFFFFF4Ch] 
            137 00721275 89 C2            mov         edx,eax 
            138 00721277 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
            139 0072127D 01 D0            add         eax,edx 
            140 0072127F 89 85 50 FF FF FF mov         dword ptr [ebp+FFFFFF50h],eax 
            141 00721285 8B 85 60 FF FF FF mov         eax,dword ptr [ebp+FFFFFF60h] 
            142 0072128B 8B 8D 50 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF50h] 
            143 00721291 89 01            mov         dword ptr [ecx],eax 
            144 00721293 8D 85 5C FF FF FF lea         eax,[ebp+FFFFFF5Ch] 
            145 00721299 89 85 54 FF FF FF mov         dword ptr [ebp+FFFFFF54h],eax 
            146 0072129F B8 01 00 00 00   mov         eax,1 
            147 007212A4 89 C2            mov         edx,eax 
            148 007212A6 8B 8D 54 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF54h] 
            149 007212AC 8B 01            mov         eax,dword ptr [ecx] 
            150 007212AE 29 D0            sub         eax,edx 
            151 007212B0 8B 8D 54 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF54h] 
            152 007212B6 89 01            mov         dword ptr [ecx],eax 
            153 007212B8 E9 ED FD FF FF   jmp         007210AA 
            154 007212BD 8D 85 58 FF FF FF lea         eax,[ebp+FFFFFF58h] 
            155 007212C3 89 85 48 FF FF FF mov         dword ptr [ebp+FFFFFF48h],eax 
            156 007212C9 B8 01 00 00 00   mov         eax,1 
            157 007212CE 89 C2            mov         edx,eax 
            158 007212D0 8B 8D 48 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF48h] 
            159 007212D6 8B 01            mov         eax,dword ptr [ecx] 
            160 007212D8 01 D0            add         eax,edx 
            161 007212DA 8B 8D 48 FF FF FF mov         ecx,dword ptr [ebp+FFFFFF48h] 
            162 007212E0 89 01            mov         dword ptr [ecx],eax 
            163 007212E2 E9 69 FD FF FF   jmp         00721050 
            164 007212E7 61               popad            
            165 007212E8 8B 85 FC FF FF FF mov         eax,dword ptr [ebp+FFFFFFFCh] 
            166 007212EE 89 EC            mov         esp,ebp 
            167 007212F0 8F C5            pop         ebp  
            168 007212F2 C2 08 00         ret         8  

                整個看起來都很糟糕啊……
            posted on 2009-05-19 16:51 陳梓瀚(vczh) 閱讀(2978) 評論(3)  編輯 收藏 引用 所屬分類: JIT

            評論:
            # re: JIT腳本引擎:CMinus編譯冒泡排序程序 2009-05-20 06:22 | he
            這樣寫沒什么意義吧  回復  更多評論
              
            # re: JIT腳本引擎:CMinus編譯冒泡排序程序 2009-05-20 20:45 | 陳梓瀚(vczh)
            @he
            存在那些想看匯編的人的話,就有意義了。  回復  更多評論
              
            # re: JIT腳本引擎:CMinus編譯冒泡排序程序 2009-05-25 01:58 | 井淵
            只是希望這些跟智力沒關系  回復  更多評論
              
            国产精品美女久久久久av爽| 久久精品国产亚洲AV无码麻豆| 综合网日日天干夜夜久久 | 久久电影网2021| 久久青草国产手机看片福利盒子| 品成人欧美大片久久国产欧美| 日韩亚洲国产综合久久久| 久久亚洲精品国产精品| 亚洲国产成人久久精品动漫| 久久精品视频一| 国产精品久久久久久久午夜片| 国产香蕉久久精品综合网| 久久66热人妻偷产精品9| 久久精品亚洲福利| a高清免费毛片久久| 国产69精品久久久久观看软件| 青青青青久久精品国产h| 亚洲精品乱码久久久久66| 久久精品二区| 亚洲国产成人久久精品动漫| 久久综合给合久久狠狠狠97色| 香蕉久久AⅤ一区二区三区| 久久久国产精品福利免费| 亚洲国产精品无码久久SM| 亚洲国产精品综合久久网络| 波多野结衣中文字幕久久| 国产99久久久国产精品小说| 丁香久久婷婷国产午夜视频| 精品久久久久久亚洲精品| 亚洲va中文字幕无码久久不卡 | 久久99精品国产麻豆宅宅| 亚洲国产精品狼友中文久久久| 99久久精品国产麻豆| 久久久久久亚洲Av无码精品专口| 伊人久久无码精品中文字幕| 亚洲国产精品一区二区三区久久| 久久成人18免费网站| 久久久精品人妻无码专区不卡| 久久精品免费大片国产大片| 97超级碰碰碰碰久久久久| 久久久久亚洲?V成人无码|