POCOの最後の命令の拡張の部分を読んでいますが、その中に今回始めて2つのレジスタの値を書き換える命令があります。
JAL X: r7<-pc+1, pc<-pc+X+1
JALはサブルーチンコールをする命令です。pcはPOCOでは決め打ちでr7に退避します。サブルーチンから返ってきたらJAL命令の次の命令に戻るのでr7にはpc+1を保存します。その後でpcにX+1を加えます。
が、本に書いてあるVerilog記述を見ていると、この2つの書き込みそれぞれは確かに動きそうなのですが、1つ目の書き込みが終わった後r7へのライトイネーブルを落とす箇所が見当たりません。よってせっかく加算をする前のpcをr7に保存してもすぐ上書きされそうに見えます。
本当かなあ?自分の勘違いかもしれないのでもう少し検討してみます。どうしても分からなければシミュレーションしてみますが。
JAL X: r7<-pc+1, pc<-pc+X+1
JALはサブルーチンコールをする命令です。pcはPOCOでは決め打ちでr7に退避します。サブルーチンから返ってきたらJAL命令の次の命令に戻るのでr7にはpc+1を保存します。その後でpcにX+1を加えます。
が、本に書いてあるVerilog記述を見ていると、この2つの書き込みそれぞれは確かに動きそうなのですが、1つ目の書き込みが終わった後r7へのライトイネーブルを落とす箇所が見当たりません。よってせっかく加算をする前のpcをr7に保存してもすぐ上書きされそうに見えます。
本当かなあ?自分の勘違いかもしれないのでもう少し検討してみます。どうしても分からなければシミュレーションしてみますが。