この質問は冗長かもしれませんが、正確な答えは見つかりませんでした。
C 8 ビット 16 ビット 32 ビット コンパイラの違いは何ですか。
同じコードに対して異なるコンパイラによって生成された.exeがどのように異なるか........
この質問は冗長かもしれませんが、正確な答えは見つかりませんでした。
C 8 ビット 16 ビット 32 ビット コンパイラの違いは何ですか。
同じコードに対して異なるコンパイラによって生成された.exeがどのように異なるか........
16 ビット コンパイラは、プログラムを 16 ビット プロセッサを搭載したコンピューターで実行される 16 ビット マシン コードにコンパイルします。16 ビット マシン コードは 32 ビット プロセッサで実行されますが、32 ビット マシン コードは 16 ビット プロセッサでは実行されません。通常、32 ビット マシン コードは 16 ビット マシン コードより高速です。
16 ビット コンパイラでは、型サイズ (ビット単位) は次のとおりです。
short, int: 16
long: 32
long long: (no such type)
pointer: 16/32 (but even 32 means only 1MB address-space on 8086)
32 ビット コンパイラでは、オブジェクト サイズ (ビット単位) は次のとおりです。
short: 16
int, long: 32
long long: 64
pointer: 32
64 ビット コンパイラでは、オブジェクト サイズ (ビット単位) は次のとおりです。
short: 16
int: 32
long: 32 or 64 (!)
long long: 64
pointer: 64
[上記の値は一般的に正しいものですが、特定のオペレーティング システムでは異なる場合があります。標準型のデフォルト サイズについては、コンパイラのドキュメントを確認してください]
以下でもう少し説明できます... http://cboard.cprogramming.com/c-programming/96536-16-bit-compilar-32-bit-compilar.html
すべてのコンパイラが最初に .exe を生成するわけではありません。プラットフォームによって、コードを指定できる形式が異なります。
8 ビット コンパイラは、16 ビットと 32 ビット、および 64 ビットと同じ、8 ビット レジスタを備えたマイクロプロセッサをターゲットにしています。マイクロプロセッサに応じて、メモリとハードウェアのアドレス指定スキームも異なります。
8/16/32/64 ビット C コンパイラのそれぞれについて、さまざまなマイクロをターゲットとする多くのコンパイラがあります。それぞれがプラットフォームごとにさまざまな最適化を行います。そう...
それらはすべてかなり異なっています。
プロセッサレジスタビットにも依存します。32 ビット コンパイラは、32 ビットおよび 64 ビット マイクロプロセッサでのみ実行できる 32 ビット マシン コードにコンパイルできます。ただし、32 ビット以上。