汇编代码无法正常工作

时间:2013-10-04 06:50:51

标签: assembly arm

过去几天我在这里的一些人的帮助下做了一个软件,现在代码已经完成但似乎有一些错误,因为它不是它所支持的。

代码如下:

            add r3,#1
            b .loop_ini

        .add_row:
            add r2,#1
            mov r3,#0
            b .loop_ini



            LDR r2,=0x0019660D
            umull r4,r5,r1,r2   @;RLo,RHi,N,M; r5 contains 32low bits from 
        .while_end:
            mov r0,r2           @;Movemos el resultado del modulo a r0
            pop {r1-r2,pc}          @;restores modified registers and returns

.end

有没有人发现任何错误?我想但是不确定在将随机值插入矩阵时可能会出现错误。

由于

1 个答案:

答案 0 :(得分:1)

好吧,因为您没有提供有关代码的预期功能的大量信息,我需要进行一些猜测,但首先引起我注意的是:

str r6, [r0]

据我所知,r0应该是随机值,r6应该是保存到的地址。

您必须在str中交换这两个,因为r0现在用作地址,r6用作要存储的值。

您还必须使用strb而不是str,至少看起来您希望使用字节,而不是完整的32位字。

我没有进一步调查,可能会有更多问题。一般来说,代码似乎不是由具有ARM组装经验的人编写的,它有很大的优化空间。 TBH,除非你有一个很好的理由使用汇编,你应该考虑切换到C或其他高级语言。一个合适的编译器将为您生成更好的代码,而不会让您头疼。