首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARM程序集'delay‘函数不适用于统一/ thumb-2语法

ARM程序集'delay‘函数不适用于统一/ thumb-2语法
EN

Stack Overflow用户
提问于 2011-11-10 12:05:23
回答 1查看 4.1K关注 0票数 1

我正在使用下面的代码为ARM做一个简单的基于计数器的延迟/等待:

代码语言:javascript
复制
.thumb_func
dowait:
   ldr r7,=0x200000
dowaitloop:
   sub r7,#1
   bne dowaitloop
   bx lr        

我从dwelch的blinker01 mbed_samples中获得了这个函数,它在其他led闪烁类型的示例程序中工作得很好。然而,我目前正在开发的程序需要在顶部有.syntax unified,因为我使用的是Thumb-2指令(例如using )。

我怀疑".syntax unified“是问题所在,因为我使用了已知有效的blinker01 example并添加了.syntax unified,但当我上传到我的主板时,它不再工作了。

虽然我还没有得到所有的gdb stuff figured out来证明这一点,但这个函数似乎没有计数/延迟。

有没有一种不同的方法来重写这个“延迟”函数来使用统一的/ Thumb-2语法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-10 22:21:58

当您希望指令更新标志时,您需要使用SUBS

代码语言:javascript
复制
.syntax unified
.thumb_func
dowait:
   ldr r0,=0x200000
dowaitloop:
   subs r0,#1
   bne dowaitloop
   bx lr   

另请注意: R7不是一个粗略的寄存器,所以在使用"C“代码中的R7函数的情况下,会出现错误,因为编译器不希望修改dowait。这就是我把它改成R0的原因。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8074883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档