请选择 进入手机版 | 继续访问电脑版

risc-v中文社区

 找回密码
 立即注册
查看: 734|回复: 0

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

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2022-10-12 16:07:16 | 显示全部楼层 |阅读模式

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-17 00:49 , Processed in 0.018297 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表