有沒有聽過在瀏覽器(IE)玩雷神之鎚Quake 3呢?只要你有Flash version 8就有可能.
不過當然!它還只是for demo,但它已經展現了很多的想像空間了!
Play Flash Quake3 Game
這種功能對一般人來說,或許不明白這有什麼好神奇的。但如果是懂程式設計的人應該會知道它有其難度的。
因為它並不是單純的進行程式移植呢!
轉貼部份ria blog的內容解釋:
如何讓 c/c++ 程式可以跑在 Tamarin 上,下面是基本的 steps
1. c -> LLVM instructions (using slightly modified version of llvm-gcc)
c/c++ code 透過 llvm-gcc (可能有動手腳稍微改過以符合 Tamarin 的需要) 編譯成標準的 LLVM instructions (IR)
2. LLVM instructions -> opcode (run by LLVM virtual machine in as3)
這些 llvm instructions 再經由一個用 actionscript 3 implement 的 virutal machine 處理成底層的 opcode
3. as3 -> bytecode -> machine code
參考資料:
Run c/c++ in flash, again !
劃時代的Adobe Alchemy
Running C and Python Code on The Web
重要參考資料:
Alchemy:Documentation:Getting Started
Chris Lattner
2009年4月8日 星期三
2009年4月7日 星期二
搭建LLVM實驗環境[轉貼]
周末在家里,把前一段時間略為作了一些研究的LLVM的文檔翻出來又讀了一下,一時興起,到llvm的官方站點里下了llvm 2.3和 llvm-gcc 4.2,在本地搭了個llvm的實驗環境。
基本的搭建步驟如下:
1:從llvm.org里下載下來llvm 2.3的source code
2:從llvm.org里下載下來llvm-gcc 4.2的source code,在llvm的官方站點里也提供了
llvm-gcc 4.2在若干個平台上的binary版本,如果正好有自己平台相對應的binary文件,
就不需要下載llvm-gcc的源碼進行手動編譯安裝的工作了
3:將llvm 2.3的源碼包解壓縮到指定目錄,我是解壓縮到
/mnt/work/personal/open-source/LLVM/source-code/llvm-2.3 目錄下
然後
4:將llvm-gcc 4.2的源碼包解壓縮到指定目錄下,然后在跟該目錄平級的地方創建一個OBJ目錄用來存放編譯llvm-gcc生成的目標文件。
如,我將llvm-gcc4.2解壓縮到 LLVM/llvm-gcc4.2-2.3.source/ 目錄下,所以需要在LLVM目錄下再新建一個llvm-gcc-obj的目錄,用于存放llvm-gcc編譯過程中生成的目標文件。(注:直接在 llvm-gcc4.2-2.3.source 目錄下編譯會報錯)
(其中program-prefix是用于確保編譯生成的gcc工具的可執行文件名會有一個llvm-的前綴,而--enable-llvm則是指定步驟 3中編譯llvm生成的目標文件的所在路徑,確保llvm-gcc的編譯過程中能夠找到所需的llvm的目標文件)
5:確保llvm-gcc工具和llvm工具的可執行程序所在路徑已經加到了PATH環境變量中至此,llvm的實驗環境已經搭建完畢。
現在我們可以使用剛剛搭建好的環境作一個小實驗。
現在有如下內容的c++源文件test.cc:
實驗步驟:
1:
我們也可以在調用llvm-g++的過程中添加上一些額外的選項,如
2:基於步驟1生成的bit code文件,我們可以調用lli來對其解釋執行
資料來源:
搭建LLVM实验环境
額外參考資料:
Google LLVM 2.0介紹
LLVM & Rubinius
LLVM论文阅读笔记(1)
基本的搭建步驟如下:
1:從llvm.org里下載下來llvm 2.3的source code
2:從llvm.org里下載下來llvm-gcc 4.2的source code,在llvm的官方站點里也提供了
llvm-gcc 4.2在若干個平台上的binary版本,如果正好有自己平台相對應的binary文件,
就不需要下載llvm-gcc的源碼進行手動編譯安裝的工作了
3:將llvm 2.3的源碼包解壓縮到指定目錄,我是解壓縮到
/mnt/work/personal/open-source/LLVM/source-code/llvm-2.3 目錄下
然後
cd /mnt/work/personal/open-source/LLVM/source-code/llvm-2.3編譯時間較長,在Ubuntu 8.04, T7250 Duo Core, 2G內存的本本上,大概花了半個小時左右的時間。
./configure
make
make install
4:將llvm-gcc 4.2的源碼包解壓縮到指定目錄下,然后在跟該目錄平級的地方創建一個OBJ目錄用來存放編譯llvm-gcc生成的目標文件。
如,我將llvm-gcc4.2解壓縮到 LLVM/llvm-gcc4.2-2.3.source/ 目錄下,所以需要在LLVM目錄下再新建一個llvm-gcc-obj的目錄,用于存放llvm-gcc編譯過程中生成的目標文件。(注:直接在 llvm-gcc4.2-2.3.source 目錄下編譯會報錯)
cd llvm-gcc-obj/
../llvm-gcc4.2-2.3.source/configure --program-prefix=llvm- --enable-llvm=/mnt/work/personal/open-source/LLVM/source-code/llvm-2.3 --enable-languages=c,c++
(其中program-prefix是用于確保編譯生成的gcc工具的可執行文件名會有一個llvm-的前綴,而--enable-llvm則是指定步驟 3中編譯llvm生成的目標文件的所在路徑,確保llvm-gcc的編譯過程中能夠找到所需的llvm的目標文件)
編譯過程大概也花了有將近二十分鐘。
make
make install
5:確保llvm-gcc工具和llvm工具的可執行程序所在路徑已經加到了PATH環境變量中至此,llvm的實驗環境已經搭建完畢。
現在我們可以使用剛剛搭建好的環境作一個小實驗。
現在有如下內容的c++源文件test.cc:
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
printf( "hello, the world\n" );
cout << "this from C++" << endl;
return 0;
}
實驗步驟:
1:
llvm-g++ test.cc -emit-llvm -c -o test.bc調用llvm-g++的編譯前端為test.cc生成相應的LLVM bit code 文件。
我們也可以在調用llvm-g++的過程中添加上一些額外的選項,如
llvm-g++ --verbose test.cc -emit-llvm -c -o test.bc加上--verbose以確認llvm-g++前端在編譯過程中使用的是正確的頭文件
llvm-g++ -S test.cc --emit-llvm加上 -S 選項,生成 LLVM的匯編格式文件。
2:基於步驟1生成的bit code文件,我們可以調用lli來對其解釋執行
lli ./test.bc3:基於步驟1生成的bit code文件,我們可以調用llvm-dis來進行反匯編
llvm-dis < test.bc4:基於步驟1生成的bit code文件,我們還可以調用llc來為其生成本地的匯編文件
llc test.bc -o test.s5:最後我們可以調用本地g++編譯器為test.s生成本地機器碼并執行之。
g++ test.s -o test.native
./test.native
資料來源:
搭建LLVM实验环境
額外參考資料:
Google LLVM 2.0介紹
LLVM & Rubinius
LLVM论文阅读笔记(1)
2009年4月3日 星期五
IETester - 讓多套 IE 共存於電腦上
IETester - 讓多套 IE 共存於電腦上
熟電腦的人應該都知道Windows通常只讓你在系統裏跑一套IE,並無法讓你同時跑好幾個不同版本的IE,這對寫網頁的人來說相當的麻煩,因為必需測試各個版本IE的相容性情況,總不能拿好幾台電腦來測試,裝Virtual Machine耗資源,速度又慢。
這裏介紹一套程式,IETester,檔案大小約24MB,它可以讓你同時使用IE5/IE6/IE7/IE8的瀏覽器核心,來看看網頁輸出的結果唷,當然啦,它還有一些小缺點如下:
* 改變視窗大小後,網頁內容可能會不見
* 上一頁 / 下一頁的按鈕功能有些不正常
* 有時無法正確取得焦點
* 不支援 Java applets
* Flash 無法在 IE 6 核心底下執行
注意:
要安裝它的最小需求是:有安裝 IE 7 的 Windows XP 或 Vista。
也有另一套叫MultipleIE也有類似的功能(可以測IE3~6),但它只能裝XP,裝在Vista上會有問題。
參考網頁:
http://nelson.pixnet.net/blog/post/19121065
熟電腦的人應該都知道Windows通常只讓你在系統裏跑一套IE,並無法讓你同時跑好幾個不同版本的IE,這對寫網頁的人來說相當的麻煩,因為必需測試各個版本IE的相容性情況,總不能拿好幾台電腦來測試,裝Virtual Machine耗資源,速度又慢。
這裏介紹一套程式,IETester,檔案大小約24MB,它可以讓你同時使用IE5/IE6/IE7/IE8的瀏覽器核心,來看看網頁輸出的結果唷,當然啦,它還有一些小缺點如下:
* 改變視窗大小後,網頁內容可能會不見
* 上一頁 / 下一頁的按鈕功能有些不正常
* 有時無法正確取得焦點
* 不支援 Java applets
* Flash 無法在 IE 6 核心底下執行
注意:
要安裝它的最小需求是:有安裝 IE 7 的 Windows XP 或 Vista。
也有另一套叫MultipleIE也有類似的功能(可以測IE3~6),但它只能裝XP,裝在Vista上會有問題。
參考網頁:
http://nelson.pixnet.net/blog/post/19121065
2009年4月2日 星期四
訂閱:
文章 (Atom)
-
昨天差點昏倒, 因為Chrome Browser一開啟後居然一片白畫面. 雖然還有IE可以用, 但就是習慣Chrome了啊, 然後開始Google別人如何解決, 不過看起來不少人遇到相同的問題, 但都沒什麼解決方法. 什麼掃毒啦, 重新安裝Chrome啦, 砍掉Default啦....
-
I/O mapped I/O(port-mapped I/O或Direct I/O) I/O與memory均擁有自己的記憶體空間 需要特別的指令來處理I/O 好處是完全不用考慮記憶體空間被I/O佔用,缺點需要額外的指令專門處理I/O存取。 Memory Mapped I/O I/...
-
好像不少人會找這個Sample Code, 小修改一下好了. 先前的Code有不少的Warning出現而且會Crash耶! 底下分別列出UDP Server及Client的範例程式. UDP Server (udp-server.c) 利用 socket 介面設計網路應用程...
一個小故事讓我們明白資金流通的意義
“又是炎熱小鎮慵懶的一天。太陽高掛,街道無人,每個人都債台高築,靠信用度日。這時,從外地來了一位有錢的旅客,他進了一家旅館,拿出一張1000 元鈔票放在櫃檯,說想先看看房間,挑一間合適的過夜,就在此人上樓的時候---- 店主抓了這張1000 元鈔,跑到隔壁屠戶那裡支付了他欠的肉錢...