例
以下は、さまざまなマイクロプロセッサで一般的に使用されるアドレスの一覧です。
x86ファミリー(インテル)
- Intel 8086プロセッサのリセットベクタは、物理アドレス FFFF0h (1 MB より 16 バイト下) にあります。リセット時のCS レジスタの値は FFFFh、 IP レジスタの値は0000h で、セグメント アドレスFFFFh:0000hが形成され、これが物理アドレス FFFF0h にマッピングされます。[ 1 ]
- Intel 80286プロセッサのリセットベクタは、物理アドレス FFFFF0h (16 MB より 16 バイト下) にあります。リセット時の CS レジスタの値は F000h で、ディスクリプタベースは FF0000h に設定され、リセット時の IP レジスタの値は FFF0h となり、セグメントアドレス FF0000h:FFF0h が形成されます。これは、リアルモードでは物理アドレス FFFFF0h にマッピングされます。[ 2 ]これは、CS レジスタを変更せずに保護モードに切り替えるための十分なスペースを確保するために変更されました。[ 3 ]
- Intel 80386以降の x86 プロセッサのリセット ベクタは、物理アドレス FFFFFFF0h (4 GB より 16 バイト下) です。リセット時の CS レジスタのセレクタ部分の値は F000h、CS レジスタのベース部分の値は FFFF0000h、リセット時の IP レジスタの値は FFF0h [ 4 ]で、セグメント アドレス FFFF0000h:FFF0h が形成され、これはリアル モードの物理アドレス FFFFFFF0h にマッピングされます。[ 5 ] [ 6 ]
その他
- ARMプロセッサのリセットベクタはアドレス0x0 [ 7 ] [ 8 ]または0xFFFF0000 [ 9 ]です。 通常の実行中は、元のROMベースのベクタテーブルと比較してパフォーマンスを向上させるために、RAMはこの場所に再マッピングされます。[ 10 ]
- MIPS32プロセッサのリセットベクタは仮想アドレス0xBFC00000にあり、[ 11 ]これはメモリのKSEG1非キャッシュ領域の最後の4Mバイトに位置しています。[ 12 ] コアはリセット時と例外が認識された時の両方でカーネルモードに入るため、仮想アドレスを物理アドレスにマッピングできます。[ 13 ]
- PowerPC / Power ISAプロセッサのリセットベクタは、32 ビットプロセッサの場合は実効アドレス 0x00000100、64 ビットプロセッサの場合は 0x0000000000000100 にあります。
- SPARCバージョン 8 プロセッサのリセット ベクタはアドレス 0x00000000 にあります。[ 14 ] SPARC バージョン 9 プロセッサのリセット ベクタは、電源投入リセットの場合はアドレス 0x20、ウォッチドッグ リセットの場合は 0x40、外部から開始されたリセットの場合は 0x60、ソフトウェアから開始されたリセットの場合は 0x80 にあります。[ 15 ]
- 68000プロセッサファミリのリセットベクタは、初期割り込みスタックレジスタ(IISR; 実際にはリセットベクタではなく、リセット後にスタックポインタを初期化するために使用されます)の場合は0x00000000、初期プログラムカウンタ(リセット)の場合は0x00000004です。[ 16 ]
- Western Digital WD16のリセットベクタは、リセットの原因によって変化する可能性があります。リセットがパリティエラーによって発生した場合、ベクタは 0x0012 からフェッチされます。リセットがバスエラーによって発生した場合、ベクタは 0x0018 からフェッチされます。どちらも当てはまらない場合は、ベクタは 0x0016 からフェッチされます。[ 17 ]
8ビットプロセッサ
- 6502プロセッサファミリのリセットベクタは、0xFFFCと0xFFFDに格納された16ビットのアドレスです。
- 6800および6809プロセッサファミリのリセットベクタは、0xFFFEおよび0xFFFFに格納される16ビットのアドレスです。
- リセットベクターなし
- 8051 / 8080 / 8085 / Z80の場合、リセットするとアドレス 0x0000 からコードの実行が開始されます。
- AVRの場合、リセットはアドレス0x0000からコードの実行を開始します。多くの場合、ここに相対ジャンプ命令(RJMP)が配置され、メモリの下位4Kにあるリセット処理ルーチンにジャンプします。
- PICの場合、リセットするとアドレス0x0000からコードの実行が開始されます。
参考文献
- ↑ 「iAPX 86,88 ユーザーマニュアル」(PDF) . Intel . 1981. システムリセット、p. 2-29、表 2-4 . 2025 年11 月 14 日取得.
- ↑ 「AMD 80286 データシート」(PDF) . AMD . 1985. p. 13.
286 は物理位置 FFFFF0H の命令でリアルモードで実行を開始します。
- ↑ 「iAPX 286 プログラマーズ リファレンス マニュアル」(PDF)。 Intel。1983 年。付録 D、iAPX 86/88 ソフトウェア互換性に関する考慮事項、p. D-2。2018年4 月 15 日取得。
リセット後、iAPX 286 では CS:IP = F000:FFF0 になります。この変更は、CS を再ロードせずに保護モードに入るのに十分なコード領域を確保するために行われました。
- ↑ 「80386 プログラマーズ リファレンス マニュアル」(PDF)。インテル。1990 年。セクション 10.1 リセット後のプロセッサの状態、10-1 - 10.3 ページ。
- ↑ "80386 プログラマーズ リファレンス マニュアル" (PDF)。 Intel。1990 年。セクション 10.2.3 最初の命令、p. 10-4。2013年11 月 3 日取得。
実行は、CS レジスタと IP レジスタの初期内容によってアドレス指定された命令から始まります。初期化ソフトウェアをアドレス空間の最上位の ROM に配置できるようにするため、コード セグメントに割り当てられたアドレスの上位 12 ビットは、ファー ジャンプやコールなど、CS レジスタをロードする最初の命令まで設定されます。その結果、命令のフェッチはアドレス 0FFFFFFF0H から始まります。
- ↑ 「Intel® 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル」(PDF)。 Intel。2012 年 5 月。セクション 9.1.4 最初の命令の実行、p. 2611。2012年 8 月 8 日にオリジナル(PDF)からアーカイブ。2012年8 月 23 日に取得。
ハードウェア リセット後にフェッチおよび実行される最初の命令は、物理アドレス FFFFFFF0h にあります。このアドレスは、プロセッサの最上位の物理アドレスから 16 バイト下です。ソフトウェア初期化コードを含む EPROM は、このアドレスに配置する必要があります。
- ↑ 「5.9.1. ベクトルテーブルとリセット」 . Cortex-M3 テクニカルリファレンスマニュアル. 2017-11-10取得.
- ↑ 「表4-11 AArch64リセットレジスタ」。CortexARM Cortex-A72 MPCoreプロセッサ技術リファレンスマニュアルr0p3 。 2024年1月30日取得。
- ↑ 「ドキュメント – Arm Developer」。developer.arm.com。2024年6月21日取得。
- ↑ 「ARMベースの組み込みシステムのブートシーケンス -2 - DM」。www.embeddedrelated.com。2017年11月10日取得。
- ↑ 「プログラマのためのMIPS32アーキテクチャ;第3巻:MIPS32特権リソースアーキテクチャ」(PDF)。MIPS Technologies。
- ↑ノアガード、タミー (2005年2月28日)。組み込みシステムアーキテクチャ:エンジニアとプログラマのための包括的なガイド。エルゼビア。ISBN 9780080491240。
- ↑ 「MIPS32 M4K プロセッサ コア ソフトウェア ユーザー マニュアル」(PDF)。cdn2.imgtec.com。2008年8 月 29 日。2017年 8 月 26 日にオリジナル(PDF)からアーカイブされました。
- ↑ SPARCアーキテクチャマニュアル、バージョン8。SPARCインターナショナル。p.75 。
- ↑ SPARCアーキテクチャマニュアル、バージョン9。SPARCインターナショナル。pp.109–112 。
- ↑ラブロス、ジャン J. (2008)。組み込みソフトウェア。ニューネス。ISBN 9780750685832。
- ↑ウィルコックス、ディック(1976年10月4日)。WD16マイクロコンピュータプログラマーリファレンスマニュアル(PDF)。ウェスタンデジタル。3ページ。2025年8月21日取得。