ARM 汇编程序未在寄存器中存储完整数字
ARM assembly program not storing full number in register
我已经为 Raspberry pi 2 编写了一个 ARM 汇编程序,它需要以下数字:
a = 2
b = 3
c = 4
x = 5
y = 6
z = a*x*x+b*x*y+c*y*y
这是它的样子:
.global _start
_start:
MOV R1, #a
MOV R2, #b
MOV R3, #c
MOV R4, #x
MOV R5, #y
@z = a*x*x+b*x*y+c*y*y
@R1 = a*x*x = 2*5*5 = 50
MUL R1, R4, R1
MUL R1, R4, R1
@R2 = b*x*y = 3*5*6 = 90
MUL R2, R4, R2
MUL R2, R5, R2
@R3 = c*y*y = 4*6*6 = 144
MUL R3, R5, R3
MUL R3, R5, R3
@ R2 = R1 + R2 + R3 OR
@ z = (a*x*x)+(b*x*y)+(c*y*y) = 50 + 90 + 144 = 284
ADD R1, R2, R1
ADD R0, R1, R3
_exit:
MOV R7, #1
SWI 0
.data
.equ a, 2
.equ b, 3
.equ c, 4
.equ x, 5
.equ y, 6
然而,当我编译 运行 程序并输入 'echo $?' 时,我得到 28 作为输出而不是完整的 284,这是为什么?
使用回显$? return 错误代码 mod 256 所以你 returning 是 284 % 256 = 28。你应该使用 printf 函数打印到控制台
我已经为 Raspberry pi 2 编写了一个 ARM 汇编程序,它需要以下数字:
a = 2
b = 3
c = 4
x = 5
y = 6
z = a*x*x+b*x*y+c*y*y
这是它的样子:
.global _start
_start:
MOV R1, #a
MOV R2, #b
MOV R3, #c
MOV R4, #x
MOV R5, #y
@z = a*x*x+b*x*y+c*y*y
@R1 = a*x*x = 2*5*5 = 50
MUL R1, R4, R1
MUL R1, R4, R1
@R2 = b*x*y = 3*5*6 = 90
MUL R2, R4, R2
MUL R2, R5, R2
@R3 = c*y*y = 4*6*6 = 144
MUL R3, R5, R3
MUL R3, R5, R3
@ R2 = R1 + R2 + R3 OR
@ z = (a*x*x)+(b*x*y)+(c*y*y) = 50 + 90 + 144 = 284
ADD R1, R2, R1
ADD R0, R1, R3
_exit:
MOV R7, #1
SWI 0
.data
.equ a, 2
.equ b, 3
.equ c, 4
.equ x, 5
.equ y, 6
然而,当我编译 运行 程序并输入 'echo $?' 时,我得到 28 作为输出而不是完整的 284,这是为什么?
使用回显$? return 错误代码 mod 256 所以你 returning 是 284 % 256 = 28。你应该使用 printf 函数打印到控制台