首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等效于NOP在C中的嵌入式?

等效于NOP在C中的嵌入式?
EN

Stack Overflow用户
提问于 2014-09-10 10:17:40
回答 3查看 14.9K关注 0票数 10

我用KEIL编写了一个程序。

该程序使用以下代码

asm(“NOP”)

不幸的是,KEIL编译器不接受该语句。

其思想是使用NOP (无操作)汇编代码引入延迟。

这在C中的实际等效值是多少?这与我使用的嵌入式控制器不同吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-10 10:24:24

这与我使用的嵌入式控制器不同吗?

是。内联程序集并不是C标准的一部分,它因编译器而异,有时甚至在同一编译器的不同目标体系结构之间也有所不同。有关详细信息,请参阅内联asm是ANSI C标准的一部分吗?

例如,对于C51 Keil编译器,内联程序集语法

代码语言:javascript
复制
...
#pragma asm
      NOP
#pragma endasm
...

而对于ARM,语法类似于

代码语言:javascript
复制
...
__asm  {
          NOP
       }
...

您需要检查手册中实际使用的编译器。

对于一些更常见的操作码,一些编译器提供所谓的本质--它们可以像C函数一样调用,但本质上是插入汇编代码,比如_nop_ ()

票数 5
EN

Stack Overflow用户

发布于 2014-09-10 10:35:24

在大多数编译器中都有一个固有的nop,Keil也应该有这个特性--试试__nop()

见- chr1359124998347.htm

由于兼容性原因,内部函数通常比直接添加程序集代码更安全。

票数 7
EN

Stack Overflow用户

发布于 2019-10-27 12:19:28

如果您使用Keil作为ARM Cortex目标(例如stm32),那么您很可能也在使用CMSIS库。它具有可移植的宏和内联函数,用于编写如下所示的所有组装指令:__NOP()

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

https://stackoverflow.com/questions/25762871

复制
相关文章

相似问题

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