• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:機械語に直すことについて。)

機械語に変換する方法とデータの意味を解説

このQ&Aのポイント
  • 機械語に変換するためのアセンブリ言語のデータと命令を詳しく解説します。
  • 特に、int命令やmov命令、xor命令の機械語について詳しく説明します。
  • また、ret命令の機械語がfarなのかnearなのかについても解説します。

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

  • ベストアンサー
回答No.14

>それと、 00 00 00はどこに消えたのでしょうか?16進数の0は無視でしょうか?これについても教えていただけないでしょうか?すみません。 消えてません。 ba 04 00 00 00 mov $0x4,%edx リトルエンディアンの「4」は0x04 0x00 0x00 0x00です。 32ビットのレジスタなのだから、値も32ビットです。 今回の場合は、 0xba と 0x04 0x00 0x00 0x00が、値だったという事。 32ビットのリトルの4はいくつになるかを考えればOKです。 もう一つは、 retf の末尾のFがfarですよ。 なお、同じように、call も call far の2種類ありますが。 当然マシン語は違います。 ただ、これは覚えたところで、エミュ職人くらいしか 役に立たない情報ですが、知識としては、 覚えるのは、自由ですので、一応回答。 あと、マシン語は、バイト=0x00~0xFFとみないで、 ビットで見ないと永遠に理解はできないでしょうね。 先ほどの例は、下位3ビットがレジスタになっている! という感じに、ビット事でオペコードが決まっていくので。 ビットで見ないと永遠に、なんでだろう~になるのは、 当然です。 んま~20年~30年前のコンピューター学校なら 教えたかもしれませんが。今はもう。 あんまり覚えても~。。ってのはありますがね。

zasx1097
質問者

お礼

先ほどの例は、下位3ビットがレジスタになっている!というのは、$0xの事か、0xのxのことでしょうか?教えていただけないでしょうか?すみません。

zasx1097
質問者

補足

0xba と 0x04 0x00 0x00 0x00が、値だったという事。 なぜ、32ビットなのに0xbaが付くのでしょうか?教えていただけないでしょうか?1 32ビットのリトルの4はいくつになるかを考えればOKです。 これはどういう意味でしょうか?教えていただけないでしょうか?

その他の回答 (14)

  • BuriBuri4
  • ベストアンサー率28% (150/525)
回答No.4

intはソフトウエア割り込み。割り込みベクタテーブルの81h番目のアドレスをコールする。実際に何が起こるかはOSとかBIOSとかによるから、この情報だけではわからない、MSDOSなら21h使うからLinux 系?拡張I/Oに割り振る事もあるから断定できないし。 movは転送(代入)操作。指定の番地にレジスタの値を書き込む、指定のレジスタに指定のレジスタの値を書き込む。 xorはそのまま排他的論理和演算を行う、この場合はEAXレジスタに0を設定したのと同じ結果になる、若干速いのとオペコードが短くなるのでmov EAX,0 の代わりに使う。 C3のRETは8080から存在してるからnearじゃね?farのretはCBとかだった気がする。

zasx1097
質問者

お礼

$0xや%eaxの$や%はどういう意味でしょうか?教えていただけないでしょうか?すみません。

zasx1097
質問者

補足

movとxor とintの機械語はどこに載っているのか教えていただけないでしょうか?すみません。教えていただけないでしょうか?

回答No.3

一部訂正 >なお、機械語は、 これだと、後に書いた方が機械語っぽく取れるので、 「なお、機械語(マシン語)→ニーモニックは」 と解釈してもらえたらと思います。

zasx1097
質問者

お礼

$0xや%eaxの$や%はどういう意味でしょうか?教えていただけないでしょうか?すみません。

zasx1097
質問者

補足

movとxor とintの機械語はどこに載っているのか教えていただけないでしょうか?すみません。教えていただけないでしょうか?

回答No.2

書いている機械語(マシン後)が正しい前提で進めます。 ba 04 00 00 00 mov $0x4,%edx bb 01 00 00 00 mov $0x1,%ebx b8 04 00 00 00 mov $0x4,%eax 89 e1 mov %esp,%ecx 31 c0 xor %eax,%eax c3 ret 全部に共通して、 左側の16進数が機械語(マシン後)で、右側がニーモニックです。 retの、far と nearは、そもそも、nearです。 far return は通常"retf"になります。 なお、機械語は、 C3ならret CBならretf です。 これで、解決ですね!。

zasx1097
質問者

お礼

$0xや%eaxの$や%はどういう意味でしょうか?教えていただけないでしょうか?すみません。

zasx1097
質問者

補足

movとxor とintの機械語はどこに載っているのか教えていただけないでしょうか?すみません。教えていただけないでしょうか?

  • t_ohta
  • ベストアンサー率38% (5292/13827)
回答No.1

int の機械語は cd です。 mov の機械語は b8 と ba と bb と 89 e1 です。 xor の機械語は 31 c0 です。 ret の機械語は c3 です。

zasx1097
質問者

お礼

$0xや%eaxの$や%はどういう意味でしょうか?教えていただけないでしょうか?すみません。

zasx1097
質問者

補足

movとxor とintの機械語はどこに載っているのか教えていただけないでしょうか?すみません。教えていただけないでしょうか?

関連するQ&A