![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
> b8 04 00 00 00 mov $0x4,%eax
> 89 e1 mov %esp,%ecx
> cd 80 int $0x80
int $0x80 はIntel x86系CPUにおけるLinuxカーネルコールで、これ自体はCPUを特権モードに移行して割り込みベクタテーブルの16進80番(10進でいうと128番)に記載されたアドレスに置かれている割り込み処理ルーチンを実行すると言うだけのこと。
Linux OSでは割り込みベクタテーブルの16進80番にシステムコールの入口が置かれているので、これがシステムコールの呼び出しになります。
どのシステムコールが実行されるかは、Intel x86系CPUのLinuxの場合は呼び出し時のeaxレジスタの値なので mov $0x4,%eax からシステムコール4番(write)が呼ばれていることが分かります。
の所で
つまり、割り込み処理ルーチンで、システムコールの入り口を呼び出してシステムコールの何番を呼び出すのかを 2行前を見て判断する。という事でしょうか?ルーチンは決まった手順という意味であっていますでしょうか?教えていただけないでしょうか?すみません。
合っていますでしょうか?よろしくお願いします。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
No.7:追記
eax が 0x04 のファンクションのとき、0x80への割り込みの場合、ecx を引数として(仕様として)必要としているからです。このあたりは、どのファンクションのときにどの引数が必要かは、仕様のドキュメントを確認してみてください。
No.7
- 回答日時:
No.6:追記
この場合というのが、この質問のことでしたら、
> b8 04 00 00 00 mov $0x4,%eax ← eaxがファンクションです。
> 89 e1 mov %esp,%ecx ← ecxが引数です。
> cd 80 int $0x80
それ以外のファンクションの確認方法は下記ページの「the Linux generated file」に記載されているファイルを確認してください。
https://en.wikibooks.org/wiki/X86_Assembly/Inter …
つまり、この場合では、ecxを設定して、int$0x80を呼び出しているのでしょうか?なぜ、引数を設定した上で、int0x80を呼び出すのでしょうか?ファンクションと引数ではないのでしょうか?教えていただけないでしょうか?すみません。
No.6
- 回答日時:
No.5:追記
「int $0x80」で呼び出した先で必要な「引数/parameter」を参照して、何らかの処理を行いますので、その必要な「引数/parameter」を設定した上で「int $0x80」を呼び出します。「2行前を見て判断する」ではなく、あくまでも設定されている「ファンクション/system call number」や「引数/parameter」を見て判断・処理を行っているのです。
No.5
- 回答日時:
No.4:追記
「2行前を見て判断する」ではなくて、int $0x80 先の割り込み先では「eax を見て(ファンクション/system call numberを)判断する」という意味です。また、eax 以外にも、他のレジスター(やスタック)を(引数/parameterとして)見て(または得て)処理を行っています。
また、eax 以外にも、他のレジスター(やスタック)を(引数/parameterとして)見て(または得て)処理を行っています。とはどういう事でしょうか?教えていただけないでしょうか?すみません。
No.3
- 回答日時:
No.2:追記
eax に ファンクション=system call number をセットし、他のレジスターに 引数=parameter をセットして、80h に割り込み処理をかけると、その割り込み処理の返りとしてファンクションの結果が何らかのかたちで得られるという仕組みです。
https://en.wikibooks.org/wiki/X86_Assembly/Inter …
No.2
- 回答日時:
No.1:追記
割り込みとは言っても、プログラムの中での割り込みは、関数を呼び出すのと同じような考え方でいいと思います。
「int $0x80」という関数を呼び出すときに eax にファンクションを設定し、他のレジスター(あるいはスタック)に引数を設定するという考え方です。「int $0x80」という関数を呼び出すとき前に、あらかじめファンクションや引数を設定しておかなければいけません。「int $0x80」の中では eax を見て何を実行するかを決め、他の引数でそれを実行します。
eax にファンクションを設定し、他のレジスター(あるいはスタック)に引数を設定するという考え方です。「int $0x80」という関数を呼び出すとき前に、あらかじめファンクションや引数を設定しておかなければいけません。「int $0x80」の中では eax を見て何を実行するかを決め、他の引数でそれを実行します。
ここがよく分かりません。教えていただけないでしょうか?すみません。
No.1
- 回答日時:
「2行前を見て判断する」は人間がそのように判断しているということであり、CPUは「int が実行された時点での レジスターeax の値を見て判断する」ということです。
ここでいう「ルーチン」とは、int を実行する前にやっておかなければいけない手順のことです。
intを実行する前にやっておく事とは何でしょうか?教えていただけないでしょうか?すみません。後、割り込み処理ルーチンとは、プログラムに割り込んで、システムコールの入り口のシステムコールがwriteの4番だと分かるという事でしょうか?教えていただけないでしょうか?すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- システム CPUの問題について 2 2022/07/09 12:04
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
- ライブ・コンサート・クラブ 渋谷のCLUBQUATTROで今度ヘッドホンを外してというライブがあり、行く予定です スタンディング 1 2022/09/07 21:44
- その他(プログラミング・Web制作) プログラムについて。 2 2022/04/07 18:48
関連するカテゴリから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 電話番号の正規表現について
-
そのまま使っただけなのに・・...
-
プログラム言語について。
おすすめ情報
以下のURLから引用しました。教えていただけないでしょうか?すみません。
https://oshiete.goo.ne.jp/qa/12428649.html