首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

新手请问ARM汇编

2012-03-18 
新手请教ARM汇编下面是C:charTest(intAddress){if(Address0x21){Test2(Address)}return(0)}汇编:TestP

新手请教ARM汇编
下面是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翻译成汇编的.当然没有自己手写效率高啊!
你可以看一下标准的教程.

热点排行