- ベストアンサー
機械語に変換する方法とデータの意味を解説
- 機械語に変換するためのアセンブリ言語のデータと命令を詳しく解説します。
- 特に、int命令やmov命令、xor命令の機械語について詳しく説明します。
- また、ret命令の機械語がfarなのかnearなのかについても解説します。
- みんなの回答 (15)
- 専門家の回答
質問者が選んだベストアンサー
>それと、 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年前のコンピューター学校なら 教えたかもしれませんが。今はもう。 あんまり覚えても~。。ってのはありますがね。
その他の回答 (14)
- BuriBuri4
- ベストアンサー率28% (150/525)
intはソフトウエア割り込み。割り込みベクタテーブルの81h番目のアドレスをコールする。実際に何が起こるかはOSとかBIOSとかによるから、この情報だけではわからない、MSDOSなら21h使うからLinux 系?拡張I/Oに割り振る事もあるから断定できないし。 movは転送(代入)操作。指定の番地にレジスタの値を書き込む、指定のレジスタに指定のレジスタの値を書き込む。 xorはそのまま排他的論理和演算を行う、この場合はEAXレジスタに0を設定したのと同じ結果になる、若干速いのとオペコードが短くなるのでmov EAX,0 の代わりに使う。 C3のRETは8080から存在してるからnearじゃね?farのretはCBとかだった気がする。
お礼
$0xや%eaxの$や%はどういう意味でしょうか?教えていただけないでしょうか?すみません。
補足
movとxor とintの機械語はどこに載っているのか教えていただけないでしょうか?すみません。教えていただけないでしょうか?
- AsarKingChang
- ベストアンサー率46% (3467/7474)
一部訂正 >なお、機械語は、 これだと、後に書いた方が機械語っぽく取れるので、 「なお、機械語(マシン語)→ニーモニックは」 と解釈してもらえたらと思います。
お礼
$0xや%eaxの$や%はどういう意味でしょうか?教えていただけないでしょうか?すみません。
補足
movとxor とintの機械語はどこに載っているのか教えていただけないでしょうか?すみません。教えていただけないでしょうか?
- AsarKingChang
- ベストアンサー率46% (3467/7474)
書いている機械語(マシン後)が正しい前提で進めます。 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 です。 これで、解決ですね!。
お礼
$0xや%eaxの$や%はどういう意味でしょうか?教えていただけないでしょうか?すみません。
補足
movとxor とintの機械語はどこに載っているのか教えていただけないでしょうか?すみません。教えていただけないでしょうか?
- t_ohta
- ベストアンサー率38% (5292/13827)
int の機械語は cd です。 mov の機械語は b8 と ba と bb と 89 e1 です。 xor の機械語は 31 c0 です。 ret の機械語は c3 です。
お礼
$0xや%eaxの$や%はどういう意味でしょうか?教えていただけないでしょうか?すみません。
補足
movとxor とintの機械語はどこに載っているのか教えていただけないでしょうか?すみません。教えていただけないでしょうか?
- 1
- 2
お礼
先ほどの例は、下位3ビットがレジスタになっている!というのは、$0xの事か、0xのxのことでしょうか?教えていただけないでしょうか?すみません。
補足
0xba と 0x04 0x00 0x00 0x00が、値だったという事。 なぜ、32ビットなのに0xbaが付くのでしょうか?教えていただけないでしょうか?1 32ビットのリトルの4はいくつになるかを考えればOKです。 これはどういう意味でしょうか?教えていただけないでしょうか?