• ベストアンサー

CASL2

CASL2の勉強をしています。 わからないことがあったので質問します。 どなたかご存知の方がいらっしゃいましたらご教示お願いいたします。 ’LD’命令の機械語は32ビットなので2語必要になりますが’RET'は16ビットなので1語必要になります。 'LD'は確かに’10’と2桁で表示して32ビット必要ですが、’RET'も’81’と2桁で32ビット必要なような気がしますが、どこが間違っているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.4

No.2です。補足にお答えします。 >2^(16)=16^(4)で16進数にしたら4桁で一語になるような気がしてなりません。 >が実際には1語で2桁です。どうなっているのでしょう? 16進では確かに1語で4桁です。 命令コードはそのうちの2桁を使っています。

hide_m
質問者

お礼

これで頭の中がすっきりしました。どうもありがとうございました。

hide_m
質問者

補足

これで頭の中がすっきりしました。どうもありがとうございました。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

LD命令は、 LD GRn,GRx または、 LD GRn,adr,GRx で、 前者は、16ビットで 後者は、32ビットです。 もともとLD命令は16ビットで表現されていますが、後者の場合アドレスを表すのに16ビット必要なので、全体として、32ビット必要なのです。 RETは、アドレスを取りませんので、 16ビットです。 っていうか COMETIIの参考資料を見ておられて、 10とか81とかおっしゃっておられると思いますが、 そこの第1語、第2語という表現に注目して下さい。 基本的にCOMETIIは16ビットマシンで 命令語の語長は16ビットです。

hide_m
質問者

お礼

ありがとうございます。4桁で16ビットですね。

hide_m
質問者

補足

16ビット=2^(16)=16^(4)で16進数にしたら4桁で一語になるような気がしてなりません。が実際には1語で2桁です。どうなっているのでしょう?

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

LDを翻訳すると10(16進2桁)になります。 同様にRETも81(16進2桁)になります。 LDは他にレジスター番号やメモリーアドレスが必要なので結局32ビットになります。 RETは他に情報は要りませんから16ビット命令でいいわけです。

hide_m
質問者

補足

2^(16)=16^(4)で16進数にしたら4桁で一語になるような気がしてなりません。が実際には1語で2桁です。どうなっているのでしょう?

noname#25358
noname#25358
回答No.1

 「10」が1つの数字です。  この「10」という数字の次に「どこからロードするのか」という情報が来ます。それをあわせて2語です。  対して、RETは「81」という数字1つで処理が完結していますので、1語です。

hide_m
質問者

お礼

2^(16)=16^(4)で16進数にしたら4桁で一語になるような気がしてなりません。が実際には1語で2桁です。どうなっているのでしょう?

hide_m
質問者

補足

1語=16ビットですか? 16ビット=2バイトですね? 一語で65536種類分別できるわけですか?

関連するQ&A