過去の試験問題を見返しているときに、問題に行き詰まりました。質問は、「次の指示のどこが間違っているか?」です。
.text
dadd r2,r0,10
j r3
dsub r4,r1,N(r0)
それは、使用しているアセンブラによって異なります。しかし、命令を厳密にそのまま見るアセンブラを使用していると仮定すると、次のようになります。
dadd r2,r0,10
このdadd
命令は、オペランドとして 3 つのレジスタを使用します。r2,r0,10
使用するオペランドについてはdaddi
(ダブルワード加算即値)。
j r3
j
命令は絶対アドレス (つまり ) を想定していますj some_label
。レジスタ間接ジャンプの場合は、jr
命令を使用します。
dsub r4,r1,N(r0)
と同様dadd
に、dsub
もオペランドとして 3 つのレジスタを使用します。私の知る限りdsub
、メモリ位置をオペランドの 1 つとして受け入れるバリアントはありません。この命令は 2 つに分割する必要があります (たとえばld r4,N(r0)
、その後に が続きdsub r4,r1,r4
ます)。