
(機械語データ) (アセンブリ言語)
b8 57 61 6b 61 mov $0x616b6157,%eax
53 push %ebx
50 push %eax
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
cd 80 int $0x80
58 pop %eax
31 c0 xor %eax,%eax
5b pop %ebx
c3 ret
これのintと movとxor の機械語が分かりません。後、retの機械語が、farなのかnearなのかも分かりません。教えていただけないでしょうか?すみません。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
>ここで手詰まりなのですが、以下のURLです。
教えていただけないでしょうか?何が知りたいのかよくわかりませんが、
補足コメントに書かれていることであれば、
mov $0x4,%edxは人間が分かりやすいように(英語っぽい)記号を用いた表現。
でも、コンピュータは電化製品なので、2進数(電気が流れているかいないか)しか分かりません。したがって、メモリ中には、0と1の情報しかありません。
しかし2進数だと桁数が多くなるので、2進数4桁を1桁にできる16進数を用います。
mov $0x4,%edx に対応する16進数が ba 04 00 00 00 となります。
これが、メモリ中の内容です。コンピュータはこれを読み取り実行します。
ここからは、私の推測です(私はインテル系の機械語には詳しくないのであしからず)
質問者様は ba と 04 と 000000 に分けてみておられますが、
04000000 が 一塊だと思います。これが $0x4に対応しているのでは
おそらく、$0x4 で4バイト の 4 を示すのでは
ちなみにインテル系はリトルエンディアンなので、4バイトの4はメモリ中では逆に並び 04000000 (16進表記)となります。
で、ba は %edxにmov を示しているのでは。
次のmov $0x1,%ebxが bb なのは bbが %ebxにmov をしめしているのだと思いますが。
mov $0x4,%edx は %edxに4バイトの4をいれろ という命令で、
メモリ中には ba 04 00 00 00 と展開される。
コンピュータは ba 04 00 00 00 を解析して %edxに4バイトの4を入れる
こんな感じでは
No.7
- 回答日時:
>その機械語はどうなるのでしょうか?
機械語は通常オペレータ部分(何をするか)とオペランド部分(どこに対してするか)に分かれます。
例えば、電話をするなら、電話をすること自体がオペレータ、電話番号がオペランドです。
その機械語がどうなるのかですが、
オペレータは、機械(CPU)によって異なるので、CPUがわからなければわかりません。
オペランドは、機械によって形式が異なるし、機械がわかっても、操作対象によってことなるのでわかりません。
ただし、質問者様の質問欄に
31 c0 xor %eax,%eax
とあるので、
xor %eax,%eax の 機械語は 16進数で 31c0 でしょうね。
これは、インテル系CPUだと思います。
通常、機械語は人間には分らないので、人間は機械語に対応したコード(この場合は 「xor」 とか 「eax」 とか)を書くことになります。
何の目的で機械語が知りたいのか分かりませんが、
インテル系アセンブラの入門書をお読みになるのが一番かと思います。
ここで手詰まりなのですが、以下のURLです。教えていただけないでしょうか?すみません。
https://6900.teacup.com/cgu135/bbs/1096
No.5
- 回答日時:
xor 排他的論理和(ビットが違っていたら1、同じなら0)
同じもの同士のxor で0クリアできる。
xorに代表される論理演算はコンピュータが最も得意とする演算なので、
0をセットするより速いと思われる
No.3
- 回答日時:
>(機械語データ) (アセンブリ言語)
左に書いてあるのがご希望の機械語ですよ。
下記ドキュメントを読めば知りたい命令の機械語が分かります。
https://www.intel.com/content/dam/www/public/us/ …
No.2
- 回答日時:
1回だけの約束で教える...再度聞いても無視します
>これのintと movとxor の機械語が分かりません。後、retの機械語が、farなのかnearなのかも分かりません。
int:イニシャル...初期化する
mov:Move...移動する
xor:わからんが拡張のORを意味かも
=======================
今判ったが、パソコンの検索欄に int 命令 と入れたら正しいかどうかは別にその命令らしき内容と詳細が出てくる
他の命令もこの例に続けて検索したら君の引き出しが増えるだろう
では、またね~
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
このカテゴリの人気Q&Aランキング
-
4
物理の斜方投射の目盛り線とx軸...
-
5
python pandas 行ごとに列名(...
-
6
MicroPythonコードについて
-
7
httpdで接続が拒否される
-
8
MicroPythonコードについて
-
9
チャットGPTをアレクサスキルを...
-
10
物理の斜方投射で目盛りに数値...
-
11
全然分からず困っています。習...
-
12
全然分からず困っています。習...
-
13
Latexに関する質問です。
-
14
python の課題で困ってます。 n...
-
15
パイソンのプログラミングにつ...
-
16
バッチでテキストファイルから...
-
17
Python3プログラムについて
-
18
batである文字列内に特定の文字...
-
19
緯度、経度の 10進法と 60進法...
-
20
Macターミナルで実行中のプログ...
おすすめ情報
公式facebook
公式twitter
ba 04 00 00 00 mov $0x4,%edx bb 01 00 00 00 mov $0x1,%ebx で、movと00 00 00とbaとbbがどうなるのかがわかりません。どこに、baとbbの命令が書かれているのでしょうか?教えていただけないでしょうか?すみません。