joe 发表于 2022-10-12 16:07:16

while(i--)对应的汇编指令


void delay(int t){
    while(t--);
}

在main.c的:
int main()
{
   while(1)
   {
       delay(0x10000);
   }
}
采用O0级别优化之后:
000001a4 <__semihosting_library_function>: //void delay(int tim) {while(tim--);} main中:r0=0x100000
1a4:        e1a00000         nop                        ; (mov r0, r0)
1a8:        e2501000         subs        r1, r0, #0//r0-0再传给r1 也就是说判断r0是否等于或小于0 但r1没有地方用到,有什么意义呢?
1ac:        e2400001         sub        r0, r0, #1 //tim--
1b0:        1afffffc         bne        1a8 <__semihosting_library_function+0x4>
1b4:        e12fff1e         bx        lr

如果采用O1级别优化之后:
000001a4 <__semihosting_library_function>:
1a4:        e2500001         subs        r0, r0, #1
1a8:        2afffffd         bcs        1a4 <__semihosting_library_function>
1ac:        e12fff1e         bx        lr

页: [1]
查看完整版本: while(i--)对应的汇编指令