【问题标题】:Can A 16-bit Machine Handle 64-Bit(data types like long int,float ...) Operations?16 位机器可以处理 64 位(数据类型,如 long int、float ...)操作吗?
【发布时间】:2012-10-11 15:54:17
【问题描述】:

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

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

【问题讨论】:

    标签: embedded microcontroller microprocessors


    【解决方案1】:

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

    与机器字相关的数据类型越宽,执行任何特定操作所需的指令就越多。性能也可能会因需要使用 RAM 而不是寄存器而受到影响,因此具有小型或non-orthogonal 寄存器集的架构执行此类操作的速度可能会更慢,并且需要更多指令。

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

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

    【讨论】:

    • 如果机器没有 RAM 怎么办,CPU 不一定要有 RAM 伴随,有很多嵌入式系统在没有 RAM 的情况下运行,但是这个声明 “越宽与机器字相关的数据类型,执行任何特定操作所需的指令越多"被高度接受
    • @Ragav:你能给出没有 RAM 的系统的具体例子吗?我认为不需要,而且这样一个受限的系统在任何情况下都几乎不需要 64 位操作。我不一定指单独的存储设备——大多数微控制器都有片上 RAM。
    • 但是使用微处理器运行的系统呢
    • @Ragav:他们呢?基于微处理器的系统通常具有外部存储设备。您似乎不同意,但我建议如果不是不切实际的话,这将是不寻常的。如果存在这样的系统,可能确实很难实现 64 位操作,但我建议很难做任何有用的事情!您的问题是关于如何完成的;你似乎发明了一个假设的系统只是为了让它变得困难。我不确定是什么目的。
    【解决方案2】:

    “句柄”到底是什么意思?

    任何图灵完备的机器都可以处理任何事情,所以理论上你的问题的答案是肯定的。然而,问题是这有多方便或实用。

    似乎任何 16 位机器都不太可能有任何硬件支持 64 位操作。

    • 如果机器不支持 64 位类型,则可以实现它(用汇编语言、C 或您使用的任何其他语言),例如使用 4 个 16 位硬件寄存器
    • 机器可能没有支持,但也许有人已经编写了实现它的库(旧的 x86 系统就是这种情况,它有很好的 64 位浮点类型库double)李>
    • 机器可能具有一些 64 位功能:32 位 ARM 有一个命令 SMLALxy 将 16 位数字相乘并将总和与 64 位数字相加

    【讨论】:

    • @Ragav 这是没有更具体信息(即平台)的正确答案。由于您是 StackOverflow 的新手,请点击左侧的绿色箭头表扬。 :)
    • @CharlesBurns:我个人建议在接受任何特定答案之前至少等待 24 小时;通过给每个时区一个唤醒和发布的机会,您可能会得到更好的答案。同样,如果您认为这个答案值得,您可以自己投票;-)
    • @anatolyg: 请详细说明 "如果机器不支持64位类型,可以实现(汇编语言,C ,或您使用的任何其他语言),例如使用 4 个 16 位硬件寄存器”
    • @Ragav:如果需要详细说明,您为什么接受? This site 展示了如何在 8 位机器上执行 16 位算术,以及该技术如何扩展到 24、32、48 或机器字宽的任何倍数。该技术同样适用于更大的架构。
    猜你喜欢
    • 2017-02-08
    • 1970-01-01
    • 2010-09-19
    • 2023-04-07
    • 1970-01-01
    • 2011-08-14
    • 2013-08-01
    • 2013-10-31
    • 2012-11-04
    相关资源
    最近更新 更多