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 を参考にして、モックを作成する。

主な仕様

| 汎用レジスタ | 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