Embedded 16位机器能否处理64位(长整型、浮点型等数据类型)操作?
16位机器能否对64位数据类型执行操作Embedded 16位机器能否处理64位(长整型、浮点型等数据类型)操作?,embedded,microcontroller,microprocessors,Embedded,Microcontroller,Microprocessors,16位机器能否对64位数据类型执行操作 我知道它可以使用两个寄存器执行32位乘法,但不知道它如何处理64位数据?你所说的“句柄”到底是什么意思 任何图灵整机都可以处理任何事情,所以理论上你的问题的答案是肯定的。然而,问题是这有多方便或实用 似乎不太可能有任何16位机器对64位操作有任何硬件支持 如果机器不支持64位类型,则可以实现它(用汇编语言、C或您使用的任何其他语言),例如使用4个16位硬件寄存器 这台机器可能没有支持,但可能有人已经编写了实现它的库(旧的x86系统就是这样,它有很好的64
我知道它可以使用两个寄存器执行32位乘法,但不知道它如何处理64位数据?你所说的“句柄”到底是什么意思 任何图灵整机都可以处理任何事情,所以理论上你的问题的答案是肯定的。然而,问题是这有多方便或实用 似乎不太可能有任何16位机器对64位操作有任何硬件支持
- 如果机器不支持64位类型,则可以实现它(用汇编语言、C或您使用的任何其他语言),例如使用4个16位硬件寄存器
- 这台机器可能没有支持,但可能有人已经编写了实现它的库(旧的x86系统就是这样,它有很好的64位浮点类型的库
)double
- 机器可能有一些64位功能:32位ARM有一个命令,该命令将16位数字相乘,并将总和添加到64位数字
- 如果机器不支持64位类型,则可以实现它(用汇编语言、C或您使用的任何其他语言),例如使用4个16位硬件寄存器
- 这台机器可能没有支持,但可能有人已经编写了实现它的库(旧的x86系统就是这样,它有很好的64位浮点类型的库
)double
- 机器可能有一些64位功能:32位ARM有一个命令,该命令将16位数字相乘,并将总和添加到64位数字
- 你所说的“把手”到底是什么意思
任何图灵整机都可以处理任何事情,所以理论上你的问题的答案是肯定的。然而,问题是这有多方便或实用
似乎不太可能有任何16位机器对64位操作有任何硬件支持
long
通常是64位的,不过您需要检查编译器是否支持它,以及它在该实现中的大小。如果您的编译器提供C99头,而C99头又包含int64\t
数据类型(及其变体),则编译器可以隐式生成64位操作的代码。当然,代码大小、内存使用量和执行时间都有可能增加
在大多数C实现中,
double
数据类型是64位的,即使在没有FPU的目标上也是如此。在寄存器/机器码级别,总是有一个指示算术进位(或借用)发生时间的符号。这可用于对任意数量的机器字执行算术运算。它不一定需要额外的寄存器,因为RAM可用于中间存储
与机器字相关的数据类型越宽,执行任何特定操作所需的指令就越多。性能也可能受到使用RAM而不是寄存器的需要的影响,因此具有小寄存器集或寄存器集的体系结构执行此类操作的速度可能更慢,并且需要更多的指令
高级语言可以为此类操作提供直接支持。C语言数据类型long
通常是64位的,不过您需要检查编译器是否支持它,以及它在该实现中的大小。如果您的编译器提供C99头,而C99头又包含int64\t
数据类型(及其变体),则编译器可以隐式生成64位操作的代码。当然,代码大小、内存使用量和执行时间都有可能增加
在大多数C实现中,
double
数据类型为64位,即使在没有FPU的目标上也是如此。@Ragav这是正确的答案,没有更具体的信息(即平台)。由于您是StackOverflow的新手,请单击左侧的绿色箭头给予积分。:)@查尔斯伯恩斯:就我个人而言,我建议在接受任何特定答案之前至少要有24小时;你可以给每个时区一个醒过来发帖的机会,从而得到更好的答案。同样,如果你认为这个答案值得,你可以自己投票;-)@anatolyg:请详细说明“如果机器不支持64位类型,则可以实现它(使用汇编语言、C或您使用的任何其他语言),例如使用4个16位硬件寄存器”@Ragav:如果需要详细说明,您为什么接受它?显示如何在8位机器上执行16位算术,以及该技术如何扩展到24、32、48或机器字宽的任意倍数。该技术同样适用于更大的体系结构。@Ragav这是正确的答案,无需更多具体信息(即平台)。由于您是StackOverflow的新手,请单击左侧的绿色箭头给予积分。:)@查尔斯伯恩斯:就我个人而言,我建议在接受任何特定答案之前至少要有24小时;你可以给每个时区一个醒过来发帖的机会,从而得到更好的答案。相等的