为了账号安全,请及时绑定邮箱和手机立即绑定

希望能够有人给我讲解一下这个函数,谢谢各位了

希望能够有人给我讲解一下这个函数,谢谢各位了

弑天下 2022-06-18 14:10:51
static inline void delay (unsigned long loops){__asm__ volatile ("1:\n""subs %0, %1, #1\n""bne 1b":"=r" (loops):"0" (loops));}
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

就用延时的意思...只不过是内嵌汇编
static inline void delay (unsigned long loops)
{
//汇编的意思
1:
subs loops,loops, #1
bne 1b

//c语言的意思
while(--loops)
;
}

改成汇编部分就是上面这个意思
但是loops不是直接的寄存器.
gcc使用 %0, %1还有后面 =r的指向
会自动吧loops放入的可用寄存器里面进行操作

这样做主要的目的.估计是方便计算值延时周期吧.

查看完整回答
反对 回复 2022-06-20
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信