2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

"制御できないものを、構造で受け止める。それが割り込みの本質である。"

アセンブリの世界では、すべてが直線的ではない。
命令が順に並び、実行される ― その幻想を打ち砕く存在がある。

それが、**割り込み(Interrupt)**であり、**例外(Exception)**である。

そして、それらを呼び出すための構文が、**INT命令(Interrupt Instruction)**だ。

この章では、INT という一命令を通じて、
プログラムが外部の力とどう向き合うべきかを問い直す。


INT命令とは何か?

INT命令(Interrupt)は、
現在の命令の流れを中断し、定義された割り込みハンドラに制御を移す命令である。

構文はシンプルだ:

INT n

nは、割り込み番号(0〜255)。
例:

  • INT 0x10:ビデオ出力
  • INT 0x13:ディスクI/O
  • INT 0x80:Linuxの古典的システムコールインターフェース

この命令は、単に「別の場所にジャンプする」ものではない。
ハードウェアとカーネルが協調し、完全な制御移譲を実現する機構である。


割り込みと例外の違い

項目 割り込み(Interrupt) 例外(Exception)
発生契機 外部(タイマー、I/O) 内部(ゼロ除算、ページフォルト)
意図性 非同期・非意図的 同期・しばしば意図的
INT命令 明示的に呼び出す 暗黙的に発火

どちらも、**「通常の流れを破壊する構造」**として共通している。
だが、設計上の意味合いは異なる。

  • 割り込み:外部との通信
  • 例外:設計の曖昧さとの邂逅

INT命令とBIOS:初期の「OS」としての使い方

初期のx86環境では、OSはまだ存在しなかった。
そのため、BIOSが持つINT命令群が、仮想的なOSの役割を担っていた。

  • INT 0x10:文字出力(VGA)
  • INT 0x13:セクタ読み書き(HDD/FDD)
  • INT 0x16:キーボード入力
  • INT 0x1A:RTC(リアルタイムクロック)
mov ah, 0x0E       ; テレタイプ出力
mov al, 'A'
int 0x10           ; 画面に 'A' を表示

これは、設計者が世界に触れるための最初の詩文だった。


Linuxにおける INT 0x80 と syscall との違い

Linuxにおいては、INT 0x80 も使われた:

mov eax, 1      ; syscall番号: write
mov ebx, 1      ; fd
mov ecx, msg    ; buffer
mov edx, len    ; length
int 0x80

しかし、64bit移行後はより効率的なsyscall命令に置き換えられた。

なぜか?

  • INTは汎用割り込み機構の一部であり、重い
  • syscallは高速な制御移譲を可能とする専用命令である

とはいえ、INT 0x80は依然として、割り込みベースの設計思想の遺構として重要な位置を占めている。


例外ハンドリング:ゼロ除算を例に

例:

xor eax, eax
div eax        ; ゼロ除算 → 例外発生(INT 0)

このとき、CPUは:

  • 現在の命令の実行を中断し
  • IDT(Interrupt Descriptor Table)に定義された #DE(Divide Error)ハンドラを呼び出す

つまり、設計の誤りが、ハードウェアによって捕捉され、構造化される
これは、「エラーを設計する」思想の原型である。


割り込みは構造である

割り込みとは:

  • 「割り込み」ではなく、制御の層を分ける構造
  • ソフトウェアとハードウェアを繋ぐ契約点
  • 実行順序という幻想を破壊する、現実の介入

この視点に立つと、INT命令とは:

プログラムが「自ら秩序を壊す」ことを許容する設計である

という哲学を内包していることが分かる。


INT命令が設計者にもたらす倫理的問い

  1. 何を「外部からの介入」と定義するか?
  2. その介入を受け入れる体制は整っているか?
  3. 意図的な中断は、設計か破綻か?
  4. 失敗(例外)は、排除すべきか、構造化すべきか?

INT命令は、単なる「呼び出し」ではない。
それは、設計者に**“秩序の分断と再接続”をどう扱うかを問う命令**である。


結語:INT命令は、設計の余白である

制御の流れとは、決して直線ではない。
それは、断絶と介入を許容することで初めて、実在する世界と接続可能になる。

INT命令は、
その断絶を構造として扱うための記号であり、
例外を論理として引き受けるための容器である。

"設計とは、全てをコントロールすることではない。コントロールできないものに、構造を与えることだ。"

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?