人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

アセンブラと機械語の対応表について教えてください。

http://www.hyuki.com/yukiwiki/wiki.cgi?WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux
上記のページで、下記のようなダンプデータが出てきます。

00000000 31C0 xor eax, eax
00000002 40 inc eax
00000003 B32A mov bl, 42
00000005 CD80 int 0x80

なぜ、機械語の"31C0" が "xor eax,eax" であるとわかるのでしょうか?

どのようなルール(対応表?)に基づいているのでしょうか?






●質問者: DQNEO
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● うぃんど
●25ポイント

機械語は通常16進数で表記されますが、そのままでは扱いづらいため、
対になる単語(ニーモニックと呼ぶ)を用意することで利便性を高めています

「C0を31しろ」と言われても「何のことやら?」になると思いますが、
「eaxとeaxをxorしろ」ならば判りやすいということです

ニーモニック一覧は「命令セット」とも呼ばれ、
Intelの最近のCPUならば下記からダウンロードできますが、
千ページを超える量となっています
http://www.intel.com/jp/download/index.htm
IA-32 インテル アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル
中巻 A: 命令セット・リファレンス A-M [日本語: PDF 形式 5,251 KB]
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol2A_i.pdf
IA-32 インテル アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル
中巻 B: 命令セット・リファレンス N-Z [日本語: PDF 形式 4,215 KB]
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol2B_i.pdf

関連用語も少し書いておきます

アセンブルニーモニックから機械語へ翻訳すること
アセンブラアセンブルを行うソフト
ディスアセンブル/逆アセンブル機械語からニーモニックへ翻訳すること
逆アセンブラ逆アセンブルを行うソフト
ハンドアセンブルアセンブラを使わずに人の手で機械語に翻訳すること

DQNEOさんのコメント
PDF見ました。すごいページ数で、何がなにやら・・ つまり複雑だということがわかりました。

2 ● taroe
●25ポイント ベストアンサー

>なぜ、機械語の"31C0" が "xor eax,eax" であるとわかるのでしょうか?

ツールがあって
それで読み込めば、そういう表示にしてくれます。
だから、簡単にわかります。

対応表もインテルから公開されています。
それは回答者1さんのとおりです。

その資料から、逆アッセンブル(ダンプ表示?)するものは
誰でも作れます。




■参考になる文献

80系のアッセンブラの本を読むとわかりやすいと思います。


はじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス)
蒲地 輝尚
4871482456


お勧めはこの本です。定番です。確か、対応表も載ってたと思います。

80系の場合は、
レジスタ変数を使う場合など
同じ命令でも、機械語コードが短くなるように工夫されているため
ちょっとわかりにくいんですね。

質問のとおり対応表という考え方に間違いはありません。

イメージ的には対応表というかルール表みたいなものです。
そのことに関しても本書で解説されています。

引用先は386ですので、32ビットに拡張されている部分が8086系と違います。
上位互換は保たれています。
このあたりについては、同じ著者の

はじめて読む486―32ビットコンピュータをやさしく語る
蒲地 輝尚
4756102131


が詳しいです。


DQNEOさんのコメント
・最新のCPUは対応表が複雑 ・もっと昔の単純なCPUなら、対応表は簡単(?) 本の紹介ありがとうございます! 読んでみます!

3 ● kodairabase
●25ポイント

以下の「第3章 命令セット・リファレンス」に載っています。

インテル エクステンデッド・メモリ 64 テクノロジ・ソフトウェアデベロッパーズ・ガイド第1巻
http://download.intel.com/jp/developer/jpdoc/EM64T_VOL1_30083402_i.pdf
インテル エクステンデッド・メモリ 64 テクノロジ・ソフトウェアデベロッパーズ・ガイド第2巻
http://download.intel.com/jp/developer/jpdoc/EM64T_VOL2_30083502_i.pdf


ニャンざぶろうさんのコメント
質問者さんにこの難しいドキュメントを読んで判れというわけでしょうか?

DQNEOさんのコメント
確かに第3章に対応表のようなものが載っていました。 読み方は全くわかりませんでしたが、とりあえずありがとうございます!

4 ● きゃづみぃ
●25ポイント

アセンブラといってもCPUごとに 違います。

ま、おおきくわけて なんとか系のCPUといった感じで 分かれますけどね。

http://homepage3.nifty.com/mitt/pic/pic42.html

http://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E8%AA%9E


DQNEOさんのコメント
CPUごとに違うんですね。 原始的なCPUなら簡単そうなので、そのあたりから勉強してみようと思います。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ