青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    這次工作將一個中間語言的程序翻譯成了匯編,然后再翻譯成機器碼。這一次產生的匯編比較爛,到時候做個窺孔優化稍微處理一下就好了。等上層的設施搞定之后再將這個中間語言到匯編的程序重寫。下面是一個菲薄納氣數列的例子。

    1:中間代碼。這是一個菲薄納氣函數的中間指令。
 1 FUNCTION 4 fab STDCALL
 2   PARAM 4 number
 3 BEGIN
 4 BLOCK
 5   VAR 4 compare_result
 6 BEGIN
 7   LT int32s compare_result, int32s number, int32s 2
 8   JBF int32s compare_result, @COMBINE
 9   MOV int32s #RETURN_VALUE, int32s 1
10   JE @COMBINE
11   BLOCK @COMBINE
12     VAR 4 a
13     VAR 4 b
14     VAR 4 c
15   BEGIN
16     MOV int32s a, int32s 1
17     MOV int32s b, int32s 1
18     BLOCK @LOOP
19     BEGIN
20       ADD int32s c, int32s a, int32s b
21       MOV int32s a, int32s b
22       MOV int32s b, int32s c
23       SUB int32s number, int32s number, int32s 1
24       LT int32s compare_result, int32s number, int32s 2
25       JET int32s compare_result, @LOOP
26       JB @LOOP
27     END BLOCK
28     MOV int32s #RETURN_VALUE, int32s b
29   END BLOCK
30 END BLOCK
31 END FUNCTION

    2:編譯后的匯編代碼(編譯成機器碼后使用Visual Studio 2008 Team System進行反匯編)
 1 000B0000 FF F5            push        ebp  
 2 000B0002 89 E5            mov         ebp,esp 
 3 000B0004 81 EC 1C 00 00 00 sub         esp,1Ch 
 4 000B000A 60               pushad           
 5 000B000B B8 02 00 00 00   mov         eax,2 
 6 000B0010 89 C2            mov         edx,eax 
 7 000B0012 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
 8 000B0018 31 FF            xor         edi,edi 
 9 000B001A B9 01 00 00 00   mov         ecx,1 
10 000B001F 39 D0            cmp         eax,edx 
11 000B0021 0F 4C F9         cmovl       edi,ecx 
12 000B0024 89 F8            mov         eax,edi 
13 000B0026 89 85 EC FF FF FF mov         dword ptr [ebp+FFFFFFECh],eax 
14 000B002C 8B 85 EC FF FF FF mov         eax,dword ptr [ebp+FFFFFFECh] 
15 000B0032 A9 FF FF FF FF   test        eax,0FFFFFFFFh 
16 000B0037 0F 84 10 00 00 00 je          000B004D 
17 000B003D B8 01 00 00 00   mov         eax,1 
18 000B0042 89 85 FC FF FF FF mov         dword ptr [ebp+FFFFFFFCh],eax 
19 000B0048 E9 9C 00 00 00   jmp         000B00E9 
20 000B004D B8 01 00 00 00   mov         eax,1 
21 000B0052 89 85 F0 FF FF FF mov         dword ptr [ebp+FFFFFFF0h],eax 
22 000B0058 B8 01 00 00 00   mov         eax,1 
23 000B005D 89 85 F4 FF FF FF mov         dword ptr [ebp+FFFFFFF4h],eax 
24 000B0063 8B 85 F4 FF FF FF mov         eax,dword ptr [ebp+FFFFFFF4h] 
25 000B0069 89 C2            mov         edx,eax 
26 000B006B 8B 85 F0 FF FF FF mov         eax,dword ptr [ebp+FFFFFFF0h] 
27 000B0071 01 D0            add         eax,edx 
28 000B0073 89 85 F8 FF FF FF mov         dword ptr [ebp+FFFFFFF8h],eax 
29 000B0079 8B 85 F4 FF FF FF mov         eax,dword ptr [ebp+FFFFFFF4h] 
30 000B007F 89 85 F0 FF FF FF mov         dword ptr [ebp+FFFFFFF0h],eax 
31 000B0085 8B 85 F8 FF FF FF mov         eax,dword ptr [ebp+FFFFFFF8h] 
32 000B008B 89 85 F4 FF FF FF mov         dword ptr [ebp+FFFFFFF4h],eax 
33 000B0091 B8 01 00 00 00   mov         eax,1 
34 000B0096 89 C2            mov         edx,eax 
35 000B0098 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
36 000B009E 29 D0            sub         eax,edx 
37 000B00A0 89 85 08 00 00 00 mov         dword ptr [ebp+00000008h],eax 
38 000B00A6 B8 02 00 00 00   mov         eax,2 
39 000B00AB 89 C2            mov         edx,eax 
40 000B00AD 8B 85 08 00 00 00 mov         eax,dword ptr [ebp+00000008h] 
41 000B00B3 31 FF            xor         edi,edi 
42 000B00B5 B9 01 00 00 00   mov         ecx,1 
43 000B00BA 39 D0            cmp         eax,edx 
44 000B00BC 0F 4C F9         cmovl       edi,ecx 
45 000B00BF 89 F8            mov         eax,edi 
46 000B00C1 89 85 EC FF FF FF mov         dword ptr [ebp+FFFFFFECh],eax 
47 000B00C7 8B 85 EC FF FF FF mov         eax,dword ptr [ebp+FFFFFFECh] 
48 000B00CD A9 FF FF FF FF   test        eax,0FFFFFFFFh 
49 000B00D2 0F 85 05 00 00 00 jne         000B00DD 
50 000B00D8 E9 86 FF FF FF   jmp         000B0063 
51 000B00DD 8B 85 F4 FF FF FF mov         eax,dword ptr [ebp+FFFFFFF4h] 
52 000B00E3 89 85 FC FF FF FF mov         dword ptr [ebp+FFFFFFFCh],eax 
53 000B00E9 8B 85 FC FF FF FF mov         eax,dword ptr [ebp+FFFFFFFCh] 
54 000B00EF 89 EC            mov         esp,ebp 
55 000B00F1 8F C5            pop         ebp  
56 000B00F3 C2 04 00         ret         4 

    附上Visual Studio 2008 Team System的截圖:

    最后是執行結果(將函數指針拿出來,然后使用不同的參數進行調用):

    接下來就是漫長的調試工作了……
posted on 2009-04-14 00:11 陳梓瀚(vczh) 閱讀(2762) 評論(9)  編輯 收藏 引用 所屬分類: JIT

評論:
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼 2009-04-14 00:33 | Lilo
將函數指針拿出來,然后使用不同的參數進行調用

難怪還看不到call printf...  回復  更多評論
  
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼 2009-04-14 02:42 | kevin.c
這個強悍 根本看不懂  回復  更多評論
  
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼 2009-04-14 07:44 | 肥仔
狄公真乃神人也!  回復  更多評論
  
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼 2009-04-14 17:15 | sapielion
牛,能不能給一套代碼,讓我們學習學習,cqm21@yahoo.com.cn  回復  更多評論
  
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼 2009-04-14 19:26 | 陳梓瀚(vczh)
@sapielion
正在測,給你有bug的代碼看是沒意義的。  回復  更多評論
  
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼 2009-04-14 19:52 | 巫云
膜拜1分鐘。
能推薦點學習匯編的資料嗎?新一點的。  回復  更多評論
  
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼 2009-04-14 20:50 | 陳梓瀚(vczh)
@巫云
Intel主頁上有匯編手冊下載。  回復  更多評論
  
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼[未登錄] 2009-09-16 05:08 | 小強
"2:編譯后的匯編代碼(編譯成機器碼后使用Visual Studio 2008 Team System進行反匯編)"

不知道樓主使用什么工具將你的轉換后的匯編代碼編譯的呢?  回復  更多評論
  
# re: JIT腳本引擎:成功將第一個腳本編譯成機器碼 2009-09-23 20:14 | 陳梓瀚(vczh)
@小強
我自己寫的工具  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区三区三区在线| 亚洲国产精品一区在线观看不卡| 亚洲激情一区二区| 亚洲婷婷在线| 亚洲国产色一区| 国产免费一区二区三区香蕉精| 理论片一区二区在线| 亚洲一卡二卡三卡四卡五卡| 午夜精品亚洲一区二区三区嫩草| 欧美成人精品三级在线观看| 韩国av一区二区| 欧美在线免费观看| 免费不卡亚洲欧美| 亚洲欧洲精品一区| 麻豆精品网站| 免费久久精品视频| 亚洲毛片av| 亚洲精品乱码久久久久久黑人| 欧美成人第一页| 99精品热视频| 亚洲一区二区三区四区中文| 国产精品午夜在线| 欧美激情在线观看| 国产欧美一区二区白浆黑人| 欧美专区亚洲专区| 国产精品久久99| 亚洲精品中文字幕在线观看| 日韩视频一区| 欧美怡红院视频| 国产精品入口福利| 久久精品综合一区| 麻豆av一区二区三区| 性8sex亚洲区入口| 亚洲高清免费在线| 裸体歌舞表演一区二区| 韩国一区二区在线观看| 国产美女精品在线| 国产伦精品一区二区三区照片91 | 亚洲男人第一网站| 夜夜嗨网站十八久久| 亚洲精品日韩在线观看| 亚洲精品视频在线观看免费| 亚洲日产国产精品| 99精品国产高清一区二区| 亚洲免费高清视频| 亚洲天堂偷拍| 亚洲欧美清纯在线制服| 西西裸体人体做爰大胆久久久 | 欧美va亚洲va香蕉在线| 麻豆国产精品777777在线 | 伊人精品视频| 在线欧美日韩国产| 亚洲精品在线视频观看| 99精品热视频| 欧美一区二区三区免费观看| 久久久激情视频| 欧美电影在线观看完整版| 亚洲第一精品电影| 麻豆精品一区二区综合av| 久久综合婷婷| 亚洲国产精品成人综合| 一本色道久久综合亚洲91| 亚洲欧美中文在线视频| 久久精品中文字幕一区| 欧美日韩亚洲综合| 午夜精品视频在线| 亚洲欧美日本国产专区一区| 久久精品99无色码中文字幕| 久久色中文字幕| 欧美日韩另类丝袜其他| 国产精品自拍小视频| 亚洲电影有码| 亚洲一区视频在线| 久久综合给合久久狠狠色| 亚洲国产欧美一区二区三区久久| 99精品国产福利在线观看免费 | 国产欧美日韩在线播放| 在线日本高清免费不卡| 亚洲天天影视| 香蕉乱码成人久久天堂爱免费 | 午夜在线a亚洲v天堂网2018| 美女福利精品视频| 99精品久久免费看蜜臀剧情介绍| 亚洲欧美成人精品| 欧美护士18xxxxhd| 国产亚洲一区二区三区| 日韩亚洲国产欧美| 久久久久免费视频| 99riav1国产精品视频| 久久精品夜色噜噜亚洲a∨| 欧美日韩精品中文字幕| 永久555www成人免费| 亚洲伦理在线免费看| 久久精品国产99国产精品| 亚洲精品综合在线| 久久久久久久久综合| 国产精品电影网站| 亚洲日本理论电影| 欧美日韩国产精品一区| 久久精品视频在线看| 亚洲国产免费看| 午夜精品福利一区二区三区av| 欧美激情一区二区久久久| 国模精品一区二区三区| 亚洲在线第一页| 欧美激情一区二区三区全黄| 亚洲欧美日本日韩| 欧美日韩精品国产| 亚洲精选成人| 麻豆freexxxx性91精品| 亚洲一级黄色| 欧美性感一类影片在线播放| 亚洲国产精品一区二区www| 久久频这里精品99香蕉| 亚洲欧美日韩一区二区三区在线| 欧美激情精品久久久久久大尺度| 精品成人a区在线观看| 久久国产高清| 亚洲在线视频| 国产精品美女久久久久久2018| 一区二区欧美在线观看| 欧美国产精品v| 久久久亚洲欧洲日产国码αv | 在线精品一区二区| 久久久久久久综合| 久久爱91午夜羞羞| 国产在线视频欧美| 久久久久久久久久久一区| 小黄鸭精品aⅴ导航网站入口 | 久久综合婷婷| 久久久久久综合| 亚洲成色777777在线观看影院| 久久在线91| 久久综合九色| 亚洲欧洲一区二区三区久久| 亚洲电影免费观看高清完整版在线观看 | 久久久福利视频| 国产亚洲成年网址在线观看| 午夜一区二区三区不卡视频| 亚洲在线不卡| 国产日产欧美a一级在线| 欧美在线观看视频一区二区| 亚洲欧美综合国产精品一区| 国产精品无人区| 久久精品视频在线观看| 久久久国产精彩视频美女艺术照福利 | 欧美国产精品v| 欧美激情第一页xxx| 1024成人网色www| 亚洲国产1区| 欧美日韩精品系列| 午夜免费在线观看精品视频| 国产精品久久久久久久午夜| 欧美一区二区三区四区在线观看| 欧美一站二站| 91久久久亚洲精品| 欧美成人一区二区| 99视频精品全国免费| 在线一区二区三区四区五区| 国产欧美一区二区精品秋霞影院| 久久嫩草精品久久久精品一| 久久一区欧美| 欧美激情1区2区3区| 91久久精品日日躁夜夜躁国产| 国产香蕉久久精品综合网| 欧美在线观看一区| 午夜精品福利一区二区蜜股av| 国产精品美女久久久久久久| 亚洲免费在线视频一区 二区| 在线视频亚洲一区| 国产精品国产三级国产普通话蜜臀| 日韩小视频在线观看专区| 亚洲青涩在线| 国产婷婷色综合av蜜臀av| 欧美亚男人的天堂| 亚洲午夜国产成人av电影男同| 亚洲网站视频福利| 看欧美日韩国产| 国产精品久久影院| 韩日精品中文字幕| 亚洲欧美日韩精品综合在线观看| 欧美在线一二三四区| 亚洲精品免费网站| 久久精品国产亚洲一区二区三区| 欧美黑人一区二区三区| 韩日欧美一区| 久久午夜羞羞影院免费观看| 亚洲午夜精品久久久久久app| 理论片一区二区在线| 国产日韩欧美亚洲一区| 亚洲精品中文字| 亚洲高清免费在线| 久久一区亚洲| 亚洲精品综合久久中文字幕| 欧美99久久| 欧美视频不卡中文| 亚洲在线视频免费观看| 久久男人资源视频| 欧美在线视频一区二区| 欧美精品久久一区二区|