割り込みベクターテーブル
読み:わりこみベクターテーブル
外語:interrupt vector table
マイクロプロセッサーからの割り込みが発生した際に呼び出す割り込みハンドラー(ISR)を記載するための対応表。単に「ベクターテーブル」とも呼ぶ。
概要
大抵のマイクロプロセッサーは、初期状態ではアドレス0から始まり、ここにマイクロプロセッサーの仕様で規定される割り込みの番号順に呼び出すべき処理のアドレス又はジャンプ命令が書かれる。
マイクロプロセッサーによっては、専用レジスターによって割り込みベクターの開始アドレスを変更することが出来るものもある。
特徴
x86
従来の16ビットモード(リアルモード)では、アドレスは0x00000から固定で、0〜255の256個があり、各々2バイトのオフセットと2バイトのセグメントで計4バイト(32ビット)であるため、テーブルは計1024バイトである。
4バイトのうち、+0 +1がオフセット、+2 +3がセグメント、各々リトルエンディアンで逆順に格納される。
このうち0〜31の範囲はCPUのアーキテクチャーとして予約されているが、実際にはそれ以外の用途で使う実装が多く、衝突することがある。
32ビットのプロテクトモードでは、アドレスは固定されず、割り込みディスクリプターテーブル(IDT)にあるゲートディスクリプターの配列により設定される。
ARM
32ビットARMの場合、全8要因で1要因あたり4バイト(32ビット)であるため、テーブルは計32バイトである。
原則として0x00000000から固定だが、一部0xFFFF0000からにできるものもある。
- 0x00000000 リセット
- 0x00000004 未定義命令
- 0x00000008 ソフトウェア割り込み
- 0x0000000C プリフェッチ・アボート
- 0x00000010 データ・アボート
- 0x00000014 (予約)
- 0x00000018 IRQ
- 0x0000001C FIQ
再検索