一回も披露したことのない豆知識

CASLIIを学んでいるのですが、命令後の表(画像)を使って
プログラムの一部
ADDA GR1,GR1
を手動で機械語 (16進)に変換すると、 2411 になるようなのですが、どのように変換するのでしょうか?
ネットで調べてみたのですが”機械語の命令(変換)表で命令と語数を確認しながら,アセンブリ言語の表記にします。”と省略されていて詳しく解説してあるページが見つからなかったので、教えていただけませんか?
ーーーーーーー
機械語の命令(変換)表
http://www.jitec.jp/1_13download/hani20061107.pdf
(32 ページに機械語とアセンブリ言語の命令の対応表があります)

「機械語からアセンブリ言語への変換の仕方を」の質問画像

A 回答 (4件)

やることは (書くだけなら) 簡単です.


まず
ADDA GR1,GR1
という命令がどの形式に当てはまるかというと, GR1 と GR1 はどちらも (と言っても同じものだが) レジスタなので
ADDA r1,r2
に当てはまります. これは変換表を見ると OP が 24 であり, その後に r1, r2 のそれぞれのレジスタを表す数値を並べればいいということになります. ここではどこにも書かれていませんが, レジスタ GR1 を指定するためには「1」という値を使うことになります. ですから
24 (ADDA r1,r2 の OPコード) 1 (今は r1 として GR1 を使っている) 1 (今は r2 として GR1 を使っている)
から 2411 という機械語が生成されます.
この辺の手順は実際のプロセッサでも同じです. ただ「どの形式に当てはまるのか」が分かりにくくなったり, 「レジスタを指定する値の決め方」がトリッキーになったりするだけ.

この回答への補足

理解したといっておいて追加質問なのですが
XOR GR1,1,GR5
の場合はどうすればよいのでしょうか?真ん中の1はどうすれば?
32がXOR r,adr,x の OPコードなのですが・・・。

補足日時:2009/01/15 13:16
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やっと理解できました!
いや、本当にありがとうございました!

お礼日時:2009/01/15 13:05

XOR GR1,1,GR5


は2語命令のようです
1語目は主op,副op,r1,x
2語目がadr
なのでGR1が1、GR5が5とすると
3215 0001
ですね
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
この表の見方をやっと理解できました!!
すばやい回答ありがとうございました。

お礼日時:2009/01/15 16:35

回答ではありません。


Googleで"CASL 逆アセンブラ"を検索すると、色々と出てきます。
参考になるソースもありまして、プログラムで応用すると、自作
できるかも知れません。また、有償/無償のソフトもあるようです。
この中に逆アセンブラがあれば見つけ物ですね。
    • good
    • 0

> ADDA GR1,GR1


> を手動で機械語 (16進)に変換すると、 2411 になるようなのですが、どのように変換するのでしょうか?

だと、機械語「への」変換に読めますけどどっちですか?
いずれにしろ、機械語の命令は幾つかの部分に分けることができて、命令の種類を指定する部分だとか
使用するレジスタを指定する部分などがあります。
アセンブリ言語の命令を解釈して、当てはまる部分を決めていって組み立てるだけです。

たしか日経ソフトウエアの最新号(2009年2月号)に、参考になる記事が載ってましたから
読んでみると良いと思います。

この回答への補足

ごめんなさいタイトル間違えてしまいました。機械語"への"変換です。
今日本屋に行ってみます。素早い回答ありがとうございました。

補足日時:2009/01/15 10:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報