首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“内联汇编指令没有唯一的大小”ARM Thumb-2 IAR

“内联汇编指令没有唯一的大小”ARM Thumb-2 IAR
EN

Stack Overflow用户
提问于 2014-05-21 23:58:08
回答 1查看 980关注 0票数 3

我在使用ARM的IAR编译器Cortex-M4进行内联汇编时遇到了问题。下面是我的问题的一个简单示例;将以下代码放在一个名为test.c的文件中

代码语言:javascript
复制
void irqrestore(int flags)
{
  asm volatile(
      "tst    %0, #1\n"
      "bne    1f\n"
      "cpsie  i\n"
      "1:\n"
      :
      : "r" (flags)
      : "memory");
}

现在尝试使用IAR编译器进行编译:

代码语言:javascript
复制
$ iccarm --thumb test.c

   IAR ANSI C/C++ Compiler V6.40.2.53884/W32 for ARM
   Copyright 1999-2012 IAR Systems AB.

    asm volatile(
    ^
"C:\home\NuttX\nuttx\test.c",6  Error[Og010]: Inline assembler instruction
          does not have a unique size: "        bne    ?1_0"

Errors: 1
Warnings: none

你知道哪里出问题了吗?如果我将"bne 1f\n“改为"bne 1\n",它编译得很好,但我不确定它是否正确。

EN

回答 1

Stack Overflow用户

发布于 2014-05-22 03:25:19

答:从IAR那里,我被告知(并已确认)以下语法是正确的:

代码语言:javascript
复制
  "bne.n  1f\n"

或者在上下文中:

代码语言:javascript
复制
void irqrestore(int flags)
{
  asm volatile(
      "tst    %0, #1\n"
      "bne.n    1f\n"
      "cpsie  i\n"
      "1:\n"
      :
      : "r" (flags)
      : "memory");
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23788286

复制
相关文章

相似问题

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