1

語長は ISA の機能であり、ハードウェアとソフトウェアの両方に実装する必要があることを知りました。私は答えについてだけ漠然とした考えを持っています。修正または確認が必要です。語長はCPU内の汎用レジスタのサイズになりますか? 語長は、コンパイラの「int」のサイズになりますか (long または short ではなく、単純な int のみ)?

4

3 に答える 3

2

ワード長は、システムによってネイティブに処理されるビット数です。現在の一般的なバージョンは、32ビットワードと64ビットワードです。

たとえば、1バイトは0から255までの数値を保持できます。ただし、32ビット整数は0〜4,294,967,295です。整数はシステムのネイティブの「ワードサイズ」であるため、32ビットシステムでは4バイト幅であるため、0〜255よりもかなり大きくなります。

実際、多くのシステム/コンパイラなどで。システムのネイティブワードサイズよりも小さいタイプは、複数の値を1つのワードに入れようとするよりも効率的であるという理由だけで、そのワードサイズに変換されます。たとえば、ブール値は1ビットで表すことができます。ただし、32個のブール値を使用するソフトウェアを作成する場合、それらすべてを1つの単語にまとめることはできません。それが金属上で実行されるとき、それぞれに独自の単語が割り当てられます。

于 2011-02-27T17:26:39.993 に答える
1

私は自由を取り、この質問を C または C++ のコンピューター上の整数のサイズとして解釈しています。その場合、このリンクが役立ち ます-intのサイズはコンパイラやプロセッサに依存しますか? . ただし、文字通り読むと、CPUのワードのサイズはそのレジスタのサイズになるはずです。

于 2011-02-27T17:34:10.877 に答える
0

ハードウェアの実装: ワード長は、CPU が一度にフェッチするバイト数であり、マシンの自然なサイズとも言えます。ただし、コンピューターには自然なことは何もありません。フェッチしたものを格納するためにレジスタが必要なため、実装では CPU のレジスタのサイズにもなります。そうは言っても、保存目的でより大きなレジスタを使用することは可能です。IA-32 ソフトウェア (語長 32 ビット) は、x86-64 (語長 64 ビット) で実行できます。ソフトウェア実装: 語長は 'int' のサイズになります (単なる int、long、short ではありません)。

于 2011-03-01T01:31:12.307 に答える