一个16位机器可以处理64位(数据类型,如long int,float ...)操作?

Rag*_*gav 1 embedded microcontroller microprocessors

16位机器可以对64位数据类型执行操作吗?

我知道它可以使用两个寄存器执行32位乘法,但不知道它如何处理64位数据?

Cli*_*ord 6

在寄存器/机器代码级别,总是有一个进位标志,指示何时发生了算术进位(或借位).这可用于对任意数量的机器字执行算术运算.它不一定需要额外的寄存器,因为RAM可用于中间存储.

与机器字相关的数据类型越宽,执行任何特定操作所需的指令就越多.性能也可能受到使用RAM而不是寄存器的需求的影响,因此具有小型或非正交寄存器组的架构可能执行此类操作甚至更慢并且需要更多指令.

高级语言可以为此类操作提供直接支持.C语言数据类型long long通常是64位,但您需要检查您的编译器是否支持它以及它在该实现中的大小.如果您的编译器提供C99 stdint.h头并且反过来包括int64_t数据类型(及其变体),则编译器隐式地能够为64位操作生成代码.代码大小,内存使用和执行时间当然会增加.

在大多数C实现中double,即使在没有FPU的目标上,数据类型也是64位.