足し算と関数呼び出し (らしきもの) ができるようになった。
~/c/cflat % uname -srmLinux 2.6.8-11-amd64-k8 x86_64~/c/cflat % cat test/add2.cbintmain(int argc, char **argv){ printf("ret=%d\n", f(76)); return 0;} intf(int i){ return i + 1;}~/c/cflat % ruby -I./lib ./bin/cbc test/add2.cb~/c/cflat % file add2add2: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), not stripped~/c/cflat % ./add2ret=77
Linux/AMD64 の calling convention を初めて真面目に調べたよ。最初の 6 個が rdi, rsi, rdx, rcx, r8, r9 で残りがスタックらしい。まだレジスタをちゃんと割り付けるロジックを書いてないので、手で割り当てるのが非常にめんどくさかった。
(19:58)