45 lines
864 B
Plaintext
45 lines
864 B
Plaintext
|
https://www.jmeiners.com/lc3-vm/
|
||
|
https://www.jmeiners.com/lc3-vm/supplies/lc3-isa.pdf
|
||
|
https://www.rodrigoaraujo.me/posts/lets-build-an-lc-3-virtual-machine/
|
||
|
|
||
|
[x] opcode enum
|
||
|
[x] register getter/setter
|
||
|
[x] condition flags enum
|
||
|
[x] function to update the condition flags based on a register
|
||
|
[x] memory getter/setter
|
||
|
[x] read file as big-endian 2-byte instructions into memory
|
||
|
[x] fetch-execute loop
|
||
|
[x] implement execute
|
||
|
[x] function: get opcode from instruction
|
||
|
[x] match opcode to function
|
||
|
[x] implement opcodes
|
||
|
[x] LEA
|
||
|
[x] ADD (reg)
|
||
|
[x] ADD (immediate)
|
||
|
[x] AND (reg)
|
||
|
[x] AND (immediate)
|
||
|
[x] BR
|
||
|
[x] JMP
|
||
|
[x] JSR
|
||
|
[x] JSRR
|
||
|
[x] LD
|
||
|
[x] LDI
|
||
|
[x] LDR
|
||
|
[x] LEA
|
||
|
[x] NOT
|
||
|
[x] RET
|
||
|
[!] RTI
|
||
|
[x] ST
|
||
|
[x] STI
|
||
|
[x] STR
|
||
|
[x] TRAP (see jmeiners article)
|
||
|
[x] getc
|
||
|
[x] out
|
||
|
[x] puts
|
||
|
[x] in
|
||
|
[x] putsp
|
||
|
[x] halt
|
||
|
[x] keyboard mem-mapped i/o
|
||
|
[x] KBSR
|
||
|
[x] KBDR
|