Study - 從無到有開發 C 編譯器 - 1


隨手筆記, 按照閱讀順序


Hackpad

github: amacc

手把手教你構建 C 語言編譯器


---
C4 : C in 4 functions

    說明

    github

看到 C4 決定先在 mac 試試 :


$ clang -g -m32 c4.c -o c4

$ ./c4 hello.c
hello, world
exit(0) cycle = 9

真的可行.

回頭再看 手把手

--

github c-interpreter



clang -g -m32 xc-tutor.c -o xc-tutor
$ ./xc-tutor hello.c 


單純讀檔



===

第二章 : 虛擬器


製作一個 虛擬器 來計算 10+20


1. 主程式
int main(int argc, char *argv[])
{
ax = 0;
...
i = 0;
text[i++] = IMM;
text[i++] = 10;
text[i++] = PUSH;
text[i++] = IMM;
text[i++] = 20;
text[i++] = ADD;
text[i++] = PUSH;
text[i++] = EXIT;
pc = text;
...
program();
}

2. 指令 :

(1) IMM <num> : 將 <num> 放到 ax 暫存器
(2) PUSH : 將 ax 值 放到 stack
(3) ADD : stack 值 + 目前 ax 暫存器值

...

看到這就想用 C++ 寫 virtual machine...

跳去讀 C++





===


Issue 1:
Mac : 升級了 mac 到 pre-release 的 16.0 .. 世界變了...

$ uname -a


Darwin neojous-MacBook-Pro.local 16.0.0 Darwin Kernel Version 16.0.0: Fri Aug 12 19:00:53 PDT 2016; root:xnu-3789.1.28~1/RELEASE_X86_64 x86_64

xcrun: error: invalid active developer path
 (/Library/Developer/CommandLineTools), missing xcrun at:
 /Library/Developer/CommandLineTools/usr/bin/xcrun

Solution:

xcode-select --install
===

Issue 2:

用 一般的 arm gcc , 找不到 memory.h, 

Solution : 

還是來裝 gcc linaro


./configure
make
make install









留言

熱門文章