【发布时间】:2012-10-11 15:54:17
【问题描述】:
16 位机器可以对 64 位数据类型执行操作吗?
我知道它可以使用两个寄存器执行 32 位乘法,但不知道它如何处理 64 位数据?
【问题讨论】:
标签: embedded microcontroller microprocessors
16 位机器可以对 64 位数据类型执行操作吗?
我知道它可以使用两个寄存器执行 32 位乘法,但不知道它如何处理 64 位数据?
【问题讨论】:
标签: embedded microcontroller microprocessors
在寄存器/机器代码级别总是有一个carry flag,它指示何时发生了算术进位(或借位)。这可用于对任意数量的机器字执行算术运算。它不一定需要额外的寄存器,因为 RAM 可用于中间存储。
与机器字相关的数据类型越宽,执行任何特定操作所需的指令就越多。性能也可能会因需要使用 RAM 而不是寄存器而受到影响,因此具有小型或non-orthogonal 寄存器集的架构执行此类操作的速度可能会更慢,并且需要更多指令。
高级语言可以为此类操作提供直接支持。 C 语言数据类型long long 通常为 64 位,但您需要检查编译器是否支持它以及它在该实现中的大小。如果您的编译器提供 C99 stdint.h 标头,而该标头又包含 int64_t 数据类型(及其变体),则编译器隐式能够生成 64 位操作的代码。代码大小、内存使用和执行时间当然会增加。
在大多数 C 实现中,double 数据类型是 64 位的,即使在没有 FPU 的目标上也是如此。
【讨论】:
“句柄”到底是什么意思?
任何图灵完备的机器都可以处理任何事情,所以理论上你的问题的答案是肯定的。然而,问题是这有多方便或实用。
似乎任何 16 位机器都不太可能有任何硬件支持 64 位操作。
double)李>
【讨论】: