garyv 发表于 2012-08-31 13:24

CORTEX-M0汇编问题

本帖最后由 garyv 于 2012-08-31 13:25 编辑

如下,ms延时函数,void mdelay(uint32_t ms),MDK-ARM编译器

实现方式1:        ldr r1, =10000
        muls r0, r1, r0
next
        cmp r0, #0
        beq back
        subs r0, r0, #1
        b next
       
back
        mov r0, lr
        bx r0实现方式2:        push {r0, r1, lr}
        ldr r1, =10000
        muls r0, r1, r0
next
        cmp r0, #0
        beq back
        subs r0, r0, #1
        b next
       
back
        pop {r0, r1, pc}这2中实现方式就是函数进入和退出时stack处理不同,但发现调用该函数mdelay(1000),差异很大,方式2产生的延时大概是方式1的2倍!
还没找到原因。
页: [1]
查看完整版本: CORTEX-M0汇编问题