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