コンテンツにスキップ

021: 「SSCを定義する」のヒント

問題 / 解答

難易度: ☆☆☆

ヒント1

上位3ビットを取り出すには、命令を右へ5ビットシフトします。 下位5ビットを取り出すには、0b11111 とのビットANDを使います。

ヒント2

1行のアセンブリは、先にコメントを取り除いてから空白を処理します。 StopJump 0 と同じ命令として特別扱いします。

ヒント3

step では、先に next_pc = pc + 1 を用意しておくと分岐以外の処理が単純になります。 Jump だけが next_pc または halted を変えます。

ヒント4

runmake_machine で状態を作り、machine["halted"] が真になるまで step を繰り返します。 無限ループに備えて、実行した命令数を数えます。