Skip to content

Instantly share code, notes, and snippets.

@katogiso
Last active November 1, 2016 14:20
Show Gist options
  • Save katogiso/d05f4e376edd3dc8e223487e7aa33f96 to your computer and use it in GitHub Desktop.
Save katogiso/d05f4e376edd3dc8e223487e7aa33f96 to your computer and use it in GitHub Desktop.

TD4

[CPUの創りかた]で定義されている TD4 を参考にして、モックを作成する。

主な仕様

data
汎用レジスタ 4bit x 2
アドレス空間 4bit
PC 4bit
フラグレジスタ 1bit
算術演算 加算(4bit)

データ

処理できるデータは 4bit のみで、オペランドも 4bit です。

命令(機械語)

7 6 5 4 3 2 1 0
ADD A,Im 0 0 0 0 Im Im Im Im
MOV A,B 0 0 0 1 0 0 0 0
IN A 0 0 1 0 0 0 0 0
MOV A,Im 0 0 1 1 Im Im Im Im
MOV B,A 0 1 0 0 0 0 0 0
ADD B,Im 0 1 0 1 Im Im Im Im
IN B 0 1 1 0 0 0 0 0
OUT B 1 0 0 1 0 0 0 0
OUT Im 1 0 1 1 Im Im Im Im
JNC Im 1 1 1 0 Im Im Im Im
JMP Im 1 1 1 1 Im Im Im Im

ADD A,Im

A <- A + Im
bit 7 6 5 4 3 2 1 0
value 0 0 0 0 Im Im Im Im

MOV A,B

A <- B
bit 7 6 5 4 3 2 1 0
value 0 0 0 1 0 0 0 0

IN A

A <- (input port)
bit 7 6 5 4 3 2 1 0
value 0 0 1 0 0 0 0 0

MOV A,Im

A <- Im
bit 7 6 5 4 3 2 1 0
value 0 0 1 1 Im Im Im Im

MOV B,A

B <- A
bit 7 6 5 4 3 2 1 0
value 0 1 0 0 0 0 0 0

ADD B,Im

B <- B + Im
bit 7 6 5 4 3 2 1 0
value 0 1 0 1 Im Im Im Im

IN B

B <- (input port)
bit 7 6 5 4 3 2 1 0
value 0 1 1 0 0 0 0 0

OUT B

(output port) <- B
bit 7 6 5 4 3 2 1 0
value 1 0 0 1 0 0 0 0

OUT Im

(output port) <- Im
bit 7 6 5 4 3 2 1 0
value 1 0 1 1 Im Im Im Im

JNC Im

PC <- Im , If Not Carry
bit 7 6 5 4 3 2 1 0
value 1 1 1 0 Im Im Im Im

JMP Im

PC <- Im
bit 7 6 5 4 3 2 1 0
value 1 1 1 1 Im Im Im Im
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment