021: 「SSCを定義する」のヒント¶
難易度: ☆☆☆
ヒント1
上位3ビットを取り出すには、命令を右へ5ビットシフトします。
下位5ビットを取り出すには、0b11111 とのビットANDを使います。
ヒント2
1行のアセンブリは、先にコメントを取り除いてから空白を処理します。
Stop は Jump 0 と同じ命令として特別扱いします。
ヒント3
step では、先に next_pc = pc + 1 を用意しておくと分岐以外の処理が単純になります。
Jump だけが next_pc または halted を変えます。
ヒント4
run は make_machine で状態を作り、machine["halted"] が真になるまで step を繰り返します。
無限ループに備えて、実行した命令数を数えます。