2011-12-09 10 views
2

タイプ変数Int64を使用すると、win95、98、2000、nt、xp、vista、win7のすべてのWindowsバージョンで動作しますか?どんなOSであれ32ビットか64ビットですか?そして、どんなCPUを使っていても?Int64はすべてのWindowsバージョンでサポートされていますか?

私のプログラムはすべてのWindowsバージョンで動作することを確信しています。

+0

類似の関連記事は次のとおりです。http://stackoverflow.com/questions/4959032/file-size-calculation-int64-and-differences-between-32bit-and-64bit –

答えて

9

言語によって提供されるデータ型のサイズは、オペレーティングシステムまたはハードウェアプラットフォームによって制約されません。私は32ビットプラットフォーム(または16ビットまたは8ビットまたは11ビット)で64ビットの整数を持つことができます。

+0

一部の言語のデータ型は、サイズによって異なりますターゲットプラットフォームに転送します。確かにDelphiは、NativeIntです。私はあなたが何を意味するかを知っていると思うが、それは明確に表現されていない。 –

+0

フェアポイント。しかし、一般的に、データ型の精度はOSとは関係ありません。 64ビット演算では64ビットOSは必要ありません。 – Joe

+2

確かに、非常に基本的な機械では、任意の精度の計算を行うことができます。あなたが作っているのは、基盤となるプラットフォームが操作可能なオペランドのサイズを制限しないということです。 –

5

Int64変数は、32ビットのDelphiコンパイラによってサポートされています。 Int64オペランドのすべてのオペレーションは、コードがどのプラットフォーム(マシン、OSなど)で実行されても同じ結果を返します。

32ビットプラットフォームでは、使用可能な32ビットマシン命令を使用して64ビット算術演算を実行するために特殊なルーチンを使用する必要があります。 64ビットマシンをターゲットとする場合、コンパイラはネイティブの64ビット命令を使用できます。どんなものであれ、最終結果はあなたには分かりません。

64ビットOS上で32ビットDelphi実行ファイルを実行する場合でも、32ビットエミュレータa.k.a.WOW64を使用することになります。実行可能ファイルの観点からは、32ビットマシン上で実行しています。 XE2で導入された新しい64ビットコンパイラを使用していない限り、32ビットの実行可能ファイルを生成します。

2

64ビット整数は、32ビットオペレーティングシステムで正常に動作します。 しかし、これらのデータ型を使用した場合のパフォーマンス向上は、64ビットオペレーティングシステム用にコンパイルされたコードを使用する場合にのみ発生します。このためには、Delphi XE2が必要です。

一方、データ容量は余裕がありますが、通常はほとんどのアプリケーションで考慮されませんが、余分な実行速度はありません。

+0

明確にするために、64ビット整数は32ビット整数より高速ではありませんが、ネイティブ64ビット整数は非ネイティブ64ビット整数より高速です。 –

+1

それは正しいです、おそらく私の記述は十分に明確ではありませんでした。具体的には、CPUレジスタサイズを超えるオペランドは、そうでないオペランドより遅くなります。したがって、同じ結果を得るにはさらに多くの操作(= CPUサイクルの増加)を必要とする32ビットシステムで実行する場合よりも、64ビット整数演算は64ビットオペレーティングシステム(64ビットコード)を実行する64ビットCPUで高速になります。 – Peter

関連する問題