作業需求

  • 改善 JIT compiler,加入若干 optimization techniques
  • 紀錄若干效能最佳化技巧帶來的提昇
 
 

開發環境

  • 作業系統:Ubuntu 14.04 (pararllels on OS X 10.11)
  • Prerequisites
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install gcc-4.8-multilib
sudo apt-get install lua5.2 lua-bitop
sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install qemu-user
  •  
 

Brainf*ck

  • 簡單的、可以用最小的編譯器來實作的、符合turing complete思想的程式語言
  • turing complete:所有規則可以用來模擬單帶圖靈機(一種數學邏輯機,可以看作等價於任何有限邏輯數學過程的終極強大邏輯機器)
  • 八個運算子(包含兩個IO)
字符
含義
C
>
指標加一
++ptr
<
指標減一
--ptr
+
指標指向的位元組的值加一
++*ptr
-
指標指向的位元組的值減一
--*ptr
.
輸出指標指向的單元內容(ASCII碼)
putchar(*ptr)
,
輸入內容到指標指向的單元(ASCII碼)
*ptr=getchar()
[
如果指標指向的單元值為零,向後跳轉到對應的]指令的次一指令處
while(*ptr){
]
如果指標指向的單元值不為零,向前跳轉到對應的[指令的次一指令處
}
  • 基本運算
  • 當前位置歸零:[-]
   while(cell[0]) {
       --cell[0];
   }
  • cat(read and ouput)
  • non-stop:+[,.]
       cell[0] <- 1
       while(cell[0]) {
           read-in a character
           print it
       }
  • end at 0:,[.,]
       read-in a charcter
       while(cell[0]) {
           read-in a character
           print it