如何在 32 位 arm 处理器中加载 64 位数字?

问题描述

我正在尝试在 32 位 ARM7TDMI-S 微处理器上加载 64 位数字,但是,我不明白该怎么做。我知道 MOV 和 LDR 都只存储 32 位数字,那么有什么办法可以将 2 个 32 位寄存器用作一个 64 位寄存器?

解决方法

只要问编译器它就会告诉你。显然你不能把 64 位放入 32 位,它需要两个寄存器。

unsigned long long fun ( unsigned long long a,unsigned long long b )
{
    return(a+b);
}

00000000 <fun>:
   0: e0900002 adds r0,r0,r2
   4: e0a11003 adc r1,r1,r3
   8: e12fff1e bx lr
,

好的,我得到了自己问题的答案。我必须在一个寄存器中加载数字的下半部分,在另一个寄存器中加载数字的上半部分。如果我们想将这两个数字相加,那么我们使用 ADDS 将下半部分相加,使用 ADC 将上半部分相加。