51

誰もが明確な答えを持っていますか?

誰かが、32 ビット OS では WORD は 16 ビットを意味すると言っていますが、本当ですか?

4

3 に答える 3

74

「単語」の概念にはいくつかの意味があります。質問には3つの意味が埋め込まれています。

  • CPU アーキテクチャのコンテキストにおける一般的な用語「プロセッサ ワード」
  • ソフトウェア/OSの「ビットサイズ」とハードウェアの「ビットサイズ」
  • 16 ビット値を意味するすべて大文字の用語WORD- これは、Windows の「Win32」C 言語 API の一部です。

Win32 のWORD型定義を説明すると、次のようなことも出てきます。

  • 「Word」、「Doubleword」、および「Quadword」の Intel/AMD 命令セットの概念

CPU アーキテクチャのコンテキストにおける一般的な用語「プロセッサ ワード」

一般的/一般的な使用法では、「プロセッサ ワード」はプロセッサ レジスタのサイズを指します。また、CPU 命令のサイズ、またはポインターのサイズを参照することもできます (正確な CPU アーキテクチャによって異なります)。単純なケースでは、32 ビット プロセッサの「ワード」サイズ (およびポインタ サイズ) は 32 ビットになります。64 ビット プロセッサの「ワード」サイズ (およびポインタ サイズ) は 64 ビットです。

この「プロセッサ ワード」の概念に関するウィキペディアの記事があります。この用語の一般的な使用法と、現在および過去のいくつかの CPU アーキテクチャのサイズが詳しく説明されています。

ソフトウェア・OSの「ビットサイズ」とハードウェアの「ビットサイズ」

「64ビット」ソフトウェアを実行するには、「64ビット」CPUと「64ビット」OSが必要です。これはおそらく明らかです。

「64 ビット ソフトウェア」は、64 ビット命令を使用します (たとえば、64 ビットの数値を加算したり、64 ビットのデータをプロセッサ レジスタから RAM に同時にコピーしたりします)。また、64 ビットのポインター サイズも使用できます。これは、最大 4 ギガバイトの RAM (「32 ビット ソフトウェア」など) しか使用できないのではなく、理論的には約 170 億ギガバイトの RAM (16 エクサバイト) を使用できることを意味します。

「64 ビット」x64/x86 CPU は、「32 ビット」(または「16 ビット」) ソフトウェアも実行できます。これは、コードを変更することなく、またソフトウェアを再構築する必要もなく実行できます。これは、すべての古い CPU 命令がまだ新しい CPU に存在し、下位互換性があるためです。

これらの概念は、「プロセッサ ワード」の一般的な概念と厳密には同じではありませんが、密接に関連しています。

注: この概念は、古くて特殊なプロセッサ (特に古いビデオ ゲーム システム) について話すと少し複雑になりますが、質問は実際にはそれらに関するものではないので、詳細には触れません。それらは「64 ビット」または「8 ビット」システムとして語られがちですが、実際はそれよりも少し複雑です。上でリンクした「プロセッサ ワード」の wiki 記事、または問題の特定のシステムに関する記事を参照してください。

質問の特定のコンテキスト - WORD、すべて大文字

質問の大文字と特定のサイズ ( WORD32 ビット OS では 16 ビット) は、「プロセッサ ワード」という一般的な用語とは異なるものを暗示しています。

従来の Windows プログラミング (Win32 API) では、 と呼ばれるマクロが定義されWORDており、そのサイズは 16 ビットです。これは、プロセッサが 16 ビットだったときに意味がありました。ただし、このマクロを含むコードを 32 ビットまたは 64 ビット ターゲット用にコンパイルしても、16 ビットのままです。Win32 APIの ADWORDは 32 ビットで、aQWORDは 64 ビットです。

これは、Microsoft が Win32 API で、コードを変更することなく下位互換性をサポートするために非常に懸命に努力しているためです。ほとんどの場合、Windows 95 時代の Win32 サンプルを変更せずにコンパイルでき、現在でもまったく同じように動作します。

Microsoft は、Intel (およびおそらく AMD) のドキュメントからこの命名スキームを継承した可能性が非常に高いです。

「ワード」、「ダブルワード」などの Intel/AMD 命令セットの概念

Intel ドキュメントでは、「Word」(Win32 WORD) は 16 ビットです。「ダブルワード」(Win32 DWORD) は 32 ビットです。「Quadword」(Win32 QWORD) は 64 ビットです。関連するアセンブリ命令名も、この命名スキームを反映しています (たとえば、MMX Add Packed IntegersPADD命令: PADDWPADDDPADDQ)。

いくつかの例については、x86 命令セットに関するこのウィキペディアの記事、またはインテルのソフトウェア開発マニュアルを確認できます。

この命名方式は、「プロセッサ ワード」の一般的な概念に関して必ずしも意味があるとは限りません。これらの概念はレジスタの一部にしか対応していないためです。ただし、x86 プログラム用の安定したプログラミング インターフェイスを作成するという点では意味があります。これは、「64 ビット」OS 上で「32 ビット」(および 16 ビット) プログラムを使用できる大きな理由です。

于 2011-03-14T07:47:09.133 に答える
1

1 Word は 16 ビットのサイズ DWord (ダブル ワード) は、プログラミングで使用される 32 ビットの Word のサイズの 2 倍ですが...

OS の Word という名前は、OS の横に表示される番号です。したがって、64 ビットと表示されている場合、この場合、1 つの単語 (storege のアドレス) は 64 ビットです。

したがって、プログラミングまたはOS番号からどの角度から見るかによって異なります

于 2015-12-11T11:10:33.333 に答える