26bitCPU
c → elvm ir → elvm-cpuの命令
EsoLang Virtual Machineの略で、C言語で書かれたプログラムをELVM IRという中間形式に変換した後に、それを元に多言語にトランスパイルするものです。
https://github.com/shinh/elvm
src.....cpuのコード
data.....romの遷移
tool.....romを整えます
pre......rs232出力を加える前のcpu本体とテストベンチが入ってます
elvm側で終了判定付け足す
DONE:ELVM IR → CPUのオペコード
DONE:im...8bitにする
DONE:負数をどうするか
DONE:jmpでまだ到達していないlabelに飛べない
DONE:rs232で画面出力とかしたい。。
| Register[] | name | num |
|---|---|---|
| 0 | A | 000 |
| 1 | B | 001 |
| 2 | C | 010 |
| 3 | D | 011 |
| 4 | BP | 100 |
| 5 | SP | 101 |
| opcode | description |
|---|---|
| 00000 | mov |
| 00001 | add |
| 00010 | sub |
| 00011 | load |
| 00100 | store |
| 00101 | putc |
| 01000 | |
| 01001 | |
| 01010 | |
| 01011 | |
| 01100 | |
| 01101 | |
| 01110 | jeq |
| 01111 | |
| 10000 | |
| 10001 | |
| 10010 | |
| 10011 | |
| 10100 | jmp |
| 10101 | label_memo |
| 10110 | lebel_cnt |
| 11111 | exit |
is_sorce_im..1bit
op...5bit
rd...8bit
rs...3bit
is_negative_num...1bit
im...8bit
