如何修复 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

提问人:Squiggly squirrel 提问时间:11/15/2023 最后编辑:Squiggly squirrel 更新时间:11/15/2023 访问量:41

问:

我得到的错误是抱怨其中一个字符串变量和设置为 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


编辑:我已经意识到,我可以检查偶数或奇数的最后一位输入,而不是当前模中的东西

程序集 编译器错误 apple-m1 arm64

评论


答: 暂无答案