![]() |
1
3
我自己解决的。
问题是我使用堆栈的方式。
而不是
|
![]() |
2
0
stmdb意味着在使用该地址开始向堆栈写入之前进行减量,这是正确的。ldmia意味着从当前堆栈指针开始递增,以将值读回其寄存器,然后递增堆栈指针。fd术语对我来说根本没有意义。就像jump if equal和jump if zero对于所有处理器都是相同的指令,并且一些asm同时提供这两种指令一样,ldm和stm只有两种类型db、ia和fd都映射到这两种类型中。我发现更容易记住后递增(ldmia)和前递减(ldmdb)。或者,如果由于某种原因将加载/存储方向转了一圈,则仍然可以根据尝试执行的操作选择正确的增量。 在C语言中,它类似于*(ptr++)与*(++ptr) |