下面是C:
char Test (int Address)
{
if (Address == 0x21)
{
Test2(Address);
}
return (0);
}
汇编:
Test PROC
CMP r0,#0x21
PUSH {r4,lr}
BNE |L1.11744|
BL Test2
|L1.11744|
MOVS r0,#0
POP {r4,pc}
ENDP
我不明白的是为什么要将r4压栈?PUSH {r4,lr} 具体是什么意思呢?
感觉r4是保存了lr,但是这里怎么是用PUSH呢?
------解决方案--------------------------------------------------------
翻《ARM嵌入式系统基础教程》、《深入浅出ARM7》
------解决方案--------------------------------------------------------
首先那种程序只是分析,而不是用来运行的.
push 应该放在最前面,这个程序并不需要把r4压栈,因为没用到它,
不过你得注意,因为c 编译器要考虑通用性,把c翻译成汇编的.当然没有自己手写效率高啊!
你可以看一下标准的教程.