1

16ビットマシンは64ビットデータ型で操作を実行できますか?

2つのレジスタを使用して32ビットの乗算を実行できることは知っていますが、64ビットのデータをどのように処理できるかわかりませんか?

4

2 に答える 2

6

レジスタ/マシンコードレベルでは、算術キャリー(またはボロー)が発生したことを示すキャリーフラグが常にあります。これは、任意の数のマシンワードに対して算術演算を実行するために使用できます。RAMは中間ストレージに使用される可能性があるため、必ずしも追加のレジスタは必要ありません。

マシンワードに関連するデータ型が広いほど、特定の操作を実行するためにより多くの命令が必要になります。レジスタではなくRAMを使用する必要があるため、パフォーマンスが低下する可能性もあります。そのため、レジスタセットが小さいか直交しないアーキテクチャでは、このような操作の実行速度がさらに遅くなり、より多くの命令が必要になる場合があります。

高水準言語は、そのような操作を直接サポートする場合があります。C言語のデータ型long longは通常64ビットですが、コンパイラがそれをサポートしているかどうか、およびその実装でのサイズを確認する必要があります。コンパイラーがC99stdint.hヘッダーを提供し、それにint64_tデータ型(およびそのバリアント)が含まれている場合、コンパイラーは暗黙的に64ビット操作のコードを生成できます。もちろん、コードサイズ、メモリ使用量、実行時間は増加します。

ほとんどのC実装ではdouble、FPUのないターゲットでも、データ型は64ビットです。

于 2012-10-11T20:13:34.077 に答える
4

「ハンドル」とはどういう意味ですか?

チューリング完全なマシンならどれでも何でも処理できるので、理論的にはあなたの質問に対する答えはイエスです。しかし、問題はそれがどれほど便利で実用的かということです。

16ビットマシンが64ビット操作をハードウェアでサポートしている可能性は低いようです。

  • マシンが64ビットタイプをサポートしていない場合は、たとえば4つの16ビットハードウェアレジスタを使用して、(アセンブリ言語、C、または使用するその他の言語で)実装することができます。
  • マシンはサポートされていない可能性がありますが、誰かがすでにそれを実装するライブラリを作成している可能性があります(これは、64ビット浮動小数点型に適したライブラリを備えた古いx86システムの場合ですdouble) 。
  • マシンには64ビット機能がいくつかある場合があります。32ビットARMには、16ビットの数値を乗算してその合計を64ビットの数値に加算するコマンドSMLALxyがあります。
于 2012-10-11T17:03:39.197 に答える