如何在 32 位 arm 处理器中加载 64 位数字?
How load a 64 bit number in a 32 bit arm processor?
我正在尝试在 32 位 ARM7TDMI-S 微处理器上加载 64 位数字,但是我不明白如何操作。我知道 MOV 和 LDR 都只存储 32 位数字,所以有什么办法可以将 2 个 32 位寄存器用作一个 64 位寄存器?
好的,我得到了我自己问题的答案。我必须将数字的下半部分加载到一个寄存器中,将上半部分加载到另一个寄存器中。如果我们想将这两个数字相加,那么我们使用 ADDS
添加下半部分,使用 ADC
.
添加上半部分
只要问编译器,它就会告诉你。显然你不能将 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
我正在尝试在 32 位 ARM7TDMI-S 微处理器上加载 64 位数字,但是我不明白如何操作。我知道 MOV 和 LDR 都只存储 32 位数字,所以有什么办法可以将 2 个 32 位寄存器用作一个 64 位寄存器?
好的,我得到了我自己问题的答案。我必须将数字的下半部分加载到一个寄存器中,将上半部分加载到另一个寄存器中。如果我们想将这两个数字相加,那么我们使用 ADDS
添加下半部分,使用 ADC
.
只要问编译器,它就会告诉你。显然你不能将 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