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

隨筆-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) 閱讀(2758) 評論(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>
            在线一区亚洲| 欧美日韩四区| 亚洲欧洲精品一区二区三区| 久久在线视频| 欧美成人精品在线观看| 欧美成人r级一区二区三区| 久久精品视频导航| 欧美伊人影院| 免费观看成人www动漫视频| 亚洲国产99精品国自产| 日韩视频免费大全中文字幕| 一区二区三区四区国产| 亚洲欧美日韩成人| 久久久久综合| 欧美日韩午夜视频在线观看| 国产日韩欧美视频| 亚洲国产成人av在线| 99在线精品视频| 欧美伊人久久久久久久久影院| 免费中文字幕日韩欧美| 亚洲激情国产精品| 一本色道婷婷久久欧美| 久久精品一区中文字幕| 亚洲国产三级在线| 亚洲欧洲av一区二区| 欧美激情成人在线视频| 国产婷婷色一区二区三区四区| 亚洲日本中文字幕免费在线不卡| 亚洲男人av电影| 欧美激情第1页| 香蕉久久国产| 欧美午夜在线一二页| 最新国产精品拍自在线播放| 欧美一区不卡| 99riav国产精品| 男女视频一区二区| 国内视频一区| 欧美一区三区二区在线观看| 一区二区三区你懂的| 欧美激情网站在线观看| 在线播放亚洲| 久久一区二区三区国产精品| 亚洲免费在线视频一区 二区| 欧美国产亚洲另类动漫| 亚洲第一色中文字幕| 欧美在线视频a| 国产精品99久久久久久人| 欧美激情一区二区久久久| 黄网站免费久久| 欧美在线视频观看免费网站| 中文久久精品| 欧美日韩国产一区二区三区地区 | 国产视频一区在线观看一区免费| 99精品欧美一区| 欧美成人69av| 免费视频一区| 亚洲精品一区二区网址| 欧美大色视频| 欧美mv日韩mv国产网站| 亚洲国产精品va| 欧美激情一区二区久久久| 久久免费偷拍视频| 亚洲国产成人午夜在线一区| 蜜桃视频一区| 免费在线视频一区| 日韩视频在线观看一区二区| 亚洲国产成人精品女人久久久 | 免费一级欧美在线大片| 久久精品久久综合| 亚洲大胆视频| 亚洲国产成人精品女人久久久| 欧美激情第二页| 亚洲无人区一区| 亚洲制服av| 黄色成人av在线| 日韩视频亚洲视频| 亚洲精品在线免费| 欧美三级视频在线| 午夜亚洲伦理| 久久露脸国产精品| 亚洲欧洲精品一区二区精品久久久| 亚洲电影专区| 欧美日韩国产成人在线91| 亚洲色诱最新| 性欧美办公室18xxxxhd| 在线看欧美日韩| 亚洲精品系列| 国产私拍一区| 日韩午夜视频在线观看| 国产曰批免费观看久久久| 欧美福利电影在线观看| 欧美体内she精视频在线观看| 久久成人免费日本黄色| 男人天堂欧美日韩| 欧美在线免费看| 久久久.com| 中文久久精品| 久久久国产午夜精品| 亚洲色诱最新| 久久尤物电影视频在线观看| 亚洲午夜精品| 老司机午夜免费精品视频| 亚洲一区二区在线视频| 久久亚洲国产成人| 午夜精品视频| 欧美精品入口| 另类欧美日韩国产在线| 国产精品久久久久久久久| 欧美风情在线观看| 国产在线观看精品一区二区三区 | 午夜一区在线| 欧美精品一区二| 玖玖视频精品| 国产精品视频你懂的| 亚洲国产中文字幕在线观看| 国产原创一区二区| 亚洲视频免费看| 日韩一二三区视频| 欧美 日韩 国产在线| 久久久亚洲影院你懂的| 国产精品久久夜| 一本久久a久久精品亚洲| 亚洲日本电影在线| 久久资源av| 久久亚洲精品网站| 国产日韩欧美综合精品| 亚洲一级在线观看| 亚洲欧美日韩一区二区在线| 欧美色区777第一页| 亚洲精品国产精品久久清纯直播| 亚洲电影免费观看高清完整版| 欧美一级视频精品观看| 欧美伊久线香蕉线新在线| 国产精品v日韩精品| 亚洲精品综合| 一本色道精品久久一区二区三区| 久久国内精品自在自线400部| 亚洲小说欧美另类社区| 欧美日韩成人免费| 亚洲欧美日韩人成在线播放| 欧美日韩国产另类不卡| 亚洲高清一区二| 亚洲国产91色在线| 久久综合一区| 久久综合给合久久狠狠色| 国产日韩综合一区二区性色av| 亚洲一区二区免费在线| 日韩视频免费| 欧美激情一区二区在线| 日韩一级黄色av| 亚洲综合日韩在线| 国产欧美日韩精品专区| 久久国产视频网站| 欧美电影免费观看高清完整版| 91久久久一线二线三线品牌| 欧美激情免费观看| 一区二区三区四区五区精品| 欧美一区深夜视频| 在线观看成人网| 欧美另类videos死尸| 在线视频欧美一区| 久久久一本精品99久久精品66| 91久久在线| 国产精品美腿一区在线看| 欧美在线视频观看| 亚洲国产精品t66y| 午夜精品久久久99热福利| 国产在线拍揄自揄视频不卡99| 老司机免费视频一区二区| 在线亚洲免费视频| 老司机免费视频一区二区三区| 亚洲老司机av| 国产丝袜一区二区| 欧美日韩国产在线| 久久爱另类一区二区小说| 亚洲国产精品一区在线观看不卡| 午夜国产精品视频| 亚洲激情在线观看视频免费| 国产精品一级二级三级| 欧美电影在线播放| 欧美综合77777色婷婷| 99riav国产精品| 欧美h视频在线| 欧美一区二区三区在线观看视频| 亚洲黄页一区| 国产视频久久久久| 欧美视频中文字幕在线| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲欧美国产视频| 欧美国产日产韩国视频| 亚洲欧美日韩一区二区三区在线| 91久久精品国产| 国内精品久久久久国产盗摄免费观看完整版 | 亚洲激情偷拍| 久久久久久久综合色一本| 亚洲一区美女视频在线观看免费| 91久久在线| 亚洲国产成人在线| 韩国亚洲精品| 国产亚洲激情在线|