打印

ICCAVR:delay函数的汇编代码很奇怪

[复制链接]
1945|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nicker88|  楼主 | 2010-12-27 18:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:        void delay(unsigned int t)
+00000095:   934A        ST      -Y,R20           Store indirect and predecrement
+00000096:   935A        ST      -Y,R21           Store indirect and predecrement
9:         for(i=0;i<t;i++)NOP();
+00000097:   2744        CLR     R20              Clear Register
+00000098:   2755        CLR     R21              Clear Register
+00000099:   C003        RJMP    PC+0x0004        Relative jump
9:         for(i=0;i<t;i++)NOP();
+0000009A:   0000        NOP                      No operation
9:         for(i=0;i<t;i++)NOP();
+0000009B:   5F4F        SUBI    R20,0xFF         Subtract immediate
+0000009C:   4F5F        SBCI    R21,0xFF         Subtract immediate with carry
9:         for(i=0;i<t;i++)NOP();
+0000009D:   1740        CP      R20,R16          Compare
+0000009E:   0751        CPC     R21,R17          Compare with carry
+0000009F:   F3D0        BRCS    PC-0x05          Branch if carry set
+000000A0:   9159        LD      R21,Y+           Load indirect and postincrement

为什么有那么多个for(i=0;i<t;i++)NOP();啊,
ICC里是这样
void delay(unsigned int t)
{
unsigned int i;
for(i=0;i<t;i++)NOP();
}

这个delay函数非常奇怪,进到for里面就出不来了,所以我才看他的汇编代码的,一看,为什么会有那么多个for啊,求指点

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

98

帖子

1

粉丝