![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
「mov $0x616b6157,%eax 0x616b6157をeaxに代入 push %ebx ebxの内容をスタックにプッシュ push %eax eaxの内容をスタックにプッシュ mov $0x4,%edx 0x4をedxに代入 mov $0x1, %ebx 0x1をebxに代入 mov $0x4,%eax 0x4をeaxに代入 mov %esp,%ecx espの内容(スタックポインタ)をecxに代入 int $0x80 割り込み(システムコール?) pop %eax スタックからポップした内容をeaxに代入 (消費したスタックの帳尻合わせ) xor %eax,%eax eaxとeaxの排他的論理和 (0->eax。フラグレジスタのゼロビットが立つ) pop %ebx スタックからポップした内容をebxに代入 ret 呼出元に戻る」
で、元データが、
(機械語データ) (アセンブリ言語)
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 $0x80 割り込み(システムコール?)と、 ret 呼出元に戻るがどういう意味なのかがわかりません。教えていただけないでしょうか?すみません。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
この質問に対する回答だけします。
悪しからず。Linuxのわかりやすい本に関しては質問を別にすれば詳しい方が説明してくださると思います。Linuxのカテゴリーがあります。
No.2
- 回答日時:
Linuxを知らないとわかりません。
システムコールはアプリとカーネルのインターフェースです。x86 Linux 32bitのシステムコールの呼び出しは int 0x80です。
システムコールはEAXに格納されている数値でいろいろな処理ができます。
https://www.mztn.org/lxasm64/x86_x64_table.html
を見ていただくとWRITEのsyscall#は4です。
mov $0x4,%eax
でeaxに4を入れているので画面に出力したいのだとわかります。
WRITEの第2引数は画面に出力したい文字列が格納されているアドレスでECXに格納します。
mov %esp,%ecx
とスタックポインターのアドレスをecxに入れています。
ESPは
push eax
でEAXに格納されている$0x616b6157(Waka)がスタックに退避しています。
WRITEの第3引数は文字数です。文字数はEDXに格納します。
mov $0x4,%edx
と4が入っているので文字数は4です。
このプログラムを実行させると画面にWakaと表示して元の画面に戻ります。そのためのRETです。
C言語で書けばたった1行。
write(1,"Waka",4)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_07.png?8acaa2e)
No.1
- 回答日時:
>教えていただけないでしょうか?
無理。
あなたがどういう環境で何をしようとしてるのか不明なので。
>int $0x80 割り込み(システムコール?)と、
>ret 呼出元に戻るがどういう意味なのかがわかりません。
システムコールってのは
様々な複数の環境であってもプログラムを変更せず共通に使えるような
仕組みの1つです
ある環境内の機能を使うのに[CALL物理アドレス」じゃ
他環境で使えないでしょ
だから
特定のレジスタやスタックに引数を入れてINT命令使って呼び出して
終えて戻ってきた時にこれまた特定のレジスタやスタックに戻り値が入ってる
という仕組みになってたりするんです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
- その他(プログラミング・Web制作) プログラムについて。 2 2022/04/07 18:48
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- その他(プログラミング・Web制作) プログラムについて。 4 2022/03/30 09:59
- その他(プログラミング・Web制作) x86_32ビットアセンブラ 2 2023/06/28 17:50
- 数学 ハイネボレルの被覆定理、内田伏一著 「集合と位相」定理22.1 1 2022/07/07 10:49
- その他(動画サービス) YMM4 で MOV ファイルが読み込まれているがプレビューされない 2 2022/07/25 18:36
- その他(パソコン・周辺機器) iPhone→ PC取り込んだHDR動画が白くなってる 1 2023/07/24 22:55
- ノートパソコン 拡張子の変換 6 2023/05/07 20:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページのプログラムの見...
-
Pythonで仮想通貨の自動売買が...
-
このプログラミング言語のfor分...
-
vba クリップボードクリアにつ...
-
Google ColaboでGUI作成
-
ウェブサイトのアクセスログに...
-
HTMLソースが表示のページのも...
-
python 気象データの取得
-
テキストファイルの1行目のみを...
-
プログラムの起動、利用につい...
-
AIの登場でプログラマーたちが...
-
Windowsのアプリ開発ってなんの...
-
ExcelVBAでFormulaR1C1を列範囲...
-
htaccessで特定のディレクトリ...
-
powershellスクリプトで出力し...
-
Pythonで、データファイルと列...
-
VBSでテキストファイルの2行目...
-
VBA 電話番号の正規表現について
-
Webプログラムってネイティブア...
-
そのまま使っただけなのに・・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
テキストファイルの1行目のみを...
-
Google ColaboでGUI作成
-
Python... 環境設定 初心者です...
-
AIの登場でプログラマーたちが...
-
入力された文字列が、LD22000を...
-
ITパスポートの勉強をしていま...
-
プログラミングサイトについて。
-
バッチファイルが保存されてい...
-
VBSでテキストファイルの2行目...
-
40代後半でゼロからのプログラ...
-
{ CONTROL Forms.Label.1}が...
-
Version Control on Unity
-
過剰なオブジェクト指向脳から...
-
VBAでパワーシェルを実行したい...
-
ImageMagickでgif画像の一部が...
-
正規表現 URL抽出「 [\\/\\b]{0...
-
VBA 電話番号の正規表現について
-
そのまま使っただけなのに・・...
-
プログラム言語について。
おすすめ情報