我是一名修补 ARM7 汇编语言编程的初学者,一直被困在这个问题上。
我正在尝试在 C 中实现一个函数,该函数采用两个无符号 32 位变量(uint32_t A 和 uint32_t B),将它们相加,然后返回一个 uint64_t 值,其中总和包含进位。
我在下面包含了我的 C 代码和 ARM7 汇编语言代码。但是,我的代码没有输出正确的值;这可能是由于我的 ASM 指令。另外,我在 32 位机器上运行 Linux。
addVal.s(下面的代码)
.global addVal
.text
addVal:
ADD R0, R0, R1
ADC R0, R1
BX LR
Run Code Online (Sandbox Code Playgroud)
addVal.c(下面的代码)
#include <stdio.h>
#include <stdint.h>
extern uint64_t addVal(uint32_t x, uint32_t y);
int main()
{
uint32_t a, b;
uint64_t c;
a = 4000000000;
b = 1000000000;
c = addVal(a,b);
printf("a = %u\r\n", a);
printf("b = %u\r\n", b);
printf("c = a + b = …Run Code Online (Sandbox Code Playgroud)