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