Jimmy's papa平常都拿人家已建置好的VM執行Pharo,但讀了這篇文章後Building the VM from scratch using Git and CMakeVMMaker,
也搜尋了關於Slang這個有趣的東東,Slang是Smalltalk語法的子集合,可轉譯為標準C語言,Slang能夠用來撰寫Smalltalk VM自身,雖然以現在的編譯器技術這應該不是什麼先進的技術,但在早期的年代用Smalltalk開發Smalltalk這構想實在太厲害了!!!
以下是轉譯smalltalk "slang" to C的小小例子
這是Smalltalk程式
sayHello
<returnTypeC: 'char*'>
^ 'JimmyScratchLab say hello'
這是對應的C程式
static char*
sayHello(void)
{
return "JimmyScratchLab say hello";
}
看了那麼多資料,Jimmy's papa一時手癢也想親自動手建置虛擬機器,於是開始捲起袖子開始動工
安裝gcc, make...一些開發工具到Linux/Ubuntu
sudo apt-get install build-essential
安裝cmake
sudo apt-get install cmake
到這裡下載cogvm-blessed-master.tar.gz
https://gitorious.org/cogvm/blessed/archive-tarball/master
下載Pharo 1.3 one-click
http://www.pharo-project.org/pharo-download/release-1-3
解開Pharo 1.3 one-click,進入/Contents目錄
寄件者 scratchlab01 |
寄件者 scratchlab01 |
寄件者 scratchlab01 |
啟動Pharo
寄件者 scratchlab01 |
下載VMMaker
Gofer new
squeaksource: 'MetacelloRepository';
package: 'ConfigurationOfCog';
load.
((Smalltalk at: #ConfigurationOfCog) project version: '1.5') load.
寄件者 scratchlab01 |
寄件者 scratchlab01 |
安裝VMMaker
Gofer new
squeaksource: 'VMMaker';
package: 'CMakeVMMaker';
version: 'CMakeVMMaker-MarianoMartinezPeck.73';
load.
寄件者 scratchlab01 |
寄件者 scratchlab01 |
使用VMMaker將Cog SLANG轉譯為C程式碼
CogUnixNoGLConfig new generateSources; generate.
寄件者 scratchlab01 |
執行結果,會發覺多了/src目錄,還有供cmake作處理的/build目錄的相關檔案
/src/vm,一堆虛擬機器核心的C原始碼
寄件者 scratchlab01 |
寄件者 scratchlab01 |
接著打開Linux/Ubuntu的終端機shell,執行
cd build
cmake .
跑出一卡車訊息
寄件者 scratchlab01 |
寄件者 scratchlab01 |
make
還是一堆編譯訊息
寄件者 scratchlab01 |
沒有留言:
張貼留言