IA-16

読み:アイエイじゅうろく
外語: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)が作った仕様は、他と互換性がなくなる方式だったようである。

用語の所属
x86
16
関連する用語
リアルモード
オペコード (IA-32)
IA-32

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club