0

我有一个要求,我必须将存储在 2 个单独的寄存器中的 64 位数字与 64 mod 2^64 相乘。在这种情况下,两个 32 位值存储在 R4(低)和 R5(高)中 到目前为止,我已经编写了以下代码:

LDR         R1,=Value
LDR         R2, [R1]
MOV         R3, #64
UMULL       R4, R5, R2, R3
MUL         R6, R4, R3
MUL         R7, R5, R3
MOV         R1, R6, LSR #32
MOV         R2, R7, LSR #32

Value       DCD         67108864

对于 mod 2^64 部分,我使用 32 位移位执行最后两个 MOV 命令。这个对吗?当我这样做时,我总是在 R1 和 R2 中得到值 0。我该怎么做才能得到 mod 2^64 = 0?

4

0 回答 0