<<
19/27
>>
First
Last
ELVM の真実
- ハーバードアーキテクチャ
- レジスタ幅とデータ領域24bit (ただしPietは16bit)
- 古典的な .data => .bss => heap => ... => stack という並び
- コード領域はBrainfuckとPietは16bit
- レジスタ6つ: A, B, C, D, SP, BP
- mov, add, sub, load, store, setcc, jcc, putc, getc, and exit
- かけ算割り算は __builtin_mul と __builtin_mod
- ビット演算や浮動小数がない (ビット演算は __builtin で実装するかも)
- 1byte は 24bit で sizeof(char) == sizeof(int) == sizeof(void*) == 1
- 1つのプログラムカウンタに複数命令入る (basic block単位)
- 自前実装(一部Bionic)のlibc (printf, malloc, strcmp などなど)
- Brainfuckで現実的な速度で実行することが主題 (よってcall/retは不在)