提问人:Squiggly squirrel 提问时间:11/15/2023 最后编辑:Squiggly squirrel 更新时间:11/15/2023 访问量:41
如何修复 Apple Silicon ARM64 程序出现错误,指出其中两个变量未 4 对齐
how to fix an apple silicon arm64 program thats getting an error saying that two of the variables are not 4 aligned
问:
我得到的错误是抱怨其中一个字符串变量和设置为 6 的输入变量以进行测试。它说它们不是 4 对齐的。这是在我配备 m1 芯片的 mac mini 上
以下代码用于计算 collatz 猜想公式中的下一个值(如果奇数为 3n+1,则为 n/2,如果为偶数)。它不完整,但我正在测试以确保偶数和奇数有效,但我得到了错误。
.global _main
.align 4
_main:
b _modulo
b _collatz
b _terminate
_collatz:
cbz X3, _printEven
cbnz X3, _printOdd
_modulo:
adr X0, input
mov X1, #2
udiv X2, X0, X1
msub X3, X2, X1, X0
_printOdd:
mov X0, #1
adr X1, odd
mov X2, #4
mov X16, #4
svc 0
b _ifOdd
_ifOdd:
adr X0, input
mov X2, #3
mov X1, #1
madd X3, X2, X0, X1
_printEven:
mov X0, #1
adr X1, even
mov X2, #5
mov X16, #4
svc 0
b _ifEven
_ifEven:
adr X0, input
mov X1, #2
udiv X2, X0, X1
_terminate:
mov X0, #0
mov X16, #1
svc 0
even: .ascii "even\n"
odd: .ascii "odd\n"
input: #6
编辑:我已经意识到,我可以检查偶数或奇数的最后一位输入,而不是当前模中的东西
答: 暂无答案
评论