首页 > 解决方案 > 将 C 转换为 ARM 汇编程序

问题描述

我有这个 C 程序:

void Move1Disk(int fm, int to);

void Hanoi(int num, int fm, int to, int aux)
{
    if (num > 1) Hanoi(num - 1, fm, aux, to) ;
    Move1Disk(fm, to) ;
    if (num > 1) Hanoi(num - 1, aux, to, fm) ;
}

我写了这个,但无法编译,谁能告诉我这个问题?

Hanoi(int, int, int, int):
        cmp     r0, #1
        push    {r4, r5, r6, r7, r8, lr}
        mov     r5, r1
        mov     r7, r2
        movgt   r4, r0
        movgt   r6, r3
        ble     .L9
.L3:
        sub     r4, r4, #1
        mov     r0, r4
        mov     r3, r7
        mov     r2, r6
        mov     r1, r5
        bl      Hanoi(int, int, int, int)
        mov     r1, r7
        mov     r0, r5
        bl      Move1Disk(int, int)
        cmp     r4, #1
        beq     .L2
        mov     r3, r5
        mov     r5, r6
        mov     r6, r3
        b       .L3
.L9:
        mov     r6, r1
.L2:
        mov     r1, r7
        mov     r0, r6
        pop     {r4, r5, r6, r7, r8, lr}
        b       Move1Disk(int, int)

这里我已经包含了主要的主要方法

和错误信息的图片: [错误信息]

标签: cassemblyarm

解决方案


在第一行:

Hanoi(int, int, int, int):

C 函数的名称中没有参数类型。如果你真的想复制一个 C 程序,这应该只是Hanoi:. 对于 that 和 的所有其他实例也是如此Move1Disk


推荐阅读