メモリ
しばらく忙しくて何も出来なかった。
ちょっと思いつきで tagged pointer を配列で書いて見ているところ。secd vm 。
- cons すると空きメモリが減っていく
- alignment されていてアドレスの末尾 3bit を型情報につかう
- 以下は (cons 4 (cons 1 3)) のつもり
SECD> (setq *vm* (make-vm)) #<vm: [0x00000048] FIXNUM | 0 [0x00000040] FIXNUM | 0 [0x00000038] FIXNUM | 0 [0x00000030] FIXNUM | 0 [0x00000028] FIXNUM | 0 [0x00000020] FIXNUM | 0 [0x00000018] FIXNUM | 0 [0x00000010] FIXNUM | 0 [0x00000008] FIXNUM | 0 *[0x00000000] FIXNUM | 0 > SECD> (vm-cons *vm* (immediate-rep 1) (immediate-rep 3)) 1 SECD> *vm* #<vm: [0x00000048] FIXNUM | 0 [0x00000040] FIXNUM | 0 [0x00000038] FIXNUM | 0 [0x00000030] FIXNUM | 0 [0x00000028] FIXNUM | 0 [0x00000020] FIXNUM | 0 [0x00000018] FIXNUM | 0 *[0x00000010] FIXNUM | 0 [0x00000008] FIXNUM | 3 [0x00000000] FIXNUM | 1 > SECD> (vm-cons *vm* (immediate-rep 4) 1) 17 SECD> *vm* #<vm: [0x00000048] FIXNUM | 0 [0x00000040] FIXNUM | 0 [0x00000038] FIXNUM | 0 [0x00000030] FIXNUM | 0 [0x00000028] FIXNUM | 0 *[0x00000020] FIXNUM | 0 [0x00000018] PAIR | 0 [0x00000010] FIXNUM | 4 [0x00000008] FIXNUM | 3 [0x00000000] FIXNUM | 1 > SECD>