IA-16 |
辞書:科学用語の基礎知識 中央演算処理装置用語x86編 (IYCP86) |
読み:アイエイじゅうろく |
外語:IA-16: Intel Architecture 16 |
品詞:固有名詞 |
Intel x86シリーズにおける、当初の16ビットアーキテクチャーの、Intel非公式の俗称。
|
概要 |
8086から存在する、もともとの動作モードである。
32ビット化されて以降も、互換性のため機能が維持された。むしろ、いかにして互換性を維持しながら32ビット化するかに心血が注がれていた。
64ビット化されても一応残されてはいるが、32ビット動作モードに存在した仮想86モードは、64ビット動作モード(AMD64 ISA/Intel 64)には存在しない。もはや過去の存在である。
特徴 |
呼称 |
16ビットしかない頃はこのような呼称はなく、32ビットのi386が登場し32ビットOSが普及し始めた頃も「リアルモード」や「仮想86モード」など動作モードで呼ばれており、このような呼称はなかった。
Intelが「Itanium」(Merced)用アーキテクチャーを「IA-64」と呼び、従来の32ビットアーキテクチャーを「IA-32」と呼んだことが全ての始まりである。
16ビットは既に過去の存在と考えたか、特にIntelから呼称は与えられなかったが、当然の帰結として、このように呼ぶと便利なことから俗称としてIA-16という俗称が生まれ使われるようになった。
セグメント方式 |
16ビット動作モードでは「セグメント:オフセット」という特殊な形式でアドレッシングが行なわれていた。おのおの16ビットであり、セグメントは16倍して加算されるため、総計で20ビット(1Miバイト)のアドレッシングが可能だった。
セグメントはセグメントレジスターと呼ばれる専用レジスターが用意され、メモリーアクセス時にセグメントレジスターをつければ20ビットでアクセスでき、さもなくば16ビットの範囲内のみでアクセスできた。
但しセグメントを指定するとプログラムサイズが増え、かつまた処理速度も遅くなるため、必要時以外はセグメントを指定しない、という使い分けが必要だった。
Cで、このアドレッシング方式をポインター変数として実現する必要があったが、Cの標準仕様の範囲内では不可能だったため、特殊な方式が使われた。以下のように呼ばれている。
このポインターを区別するため、far/near/hugeというCの規格外となる独自の予約語を定義し、以下のように使用した。
unsigned char near *np;
unsigned char far *fp;
unsigned char huge *hp;
規格の流儀に則るならば、__far や __near などとするべきだったが、最初にこの方式を考案したCコンパイラー実装者(おそらくMicrosoft)が作った仕様は、他と互換性がなくなる方式だったようである。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |