首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内联汇编程序:传递一个常量

内联汇编程序:传递一个常量
EN

Stack Overflow用户
提问于 2016-02-10 20:21:32
回答 2查看 3.4K关注 0票数 2

我有以下问题:我希望使用内联汇编程序使用C源文件中的以下汇编程序代码:

代码语言:javascript
运行
复制
.word 1

我得到的最接近的是使用这个内联汇编程序代码:

代码语言:javascript
运行
复制
asm(".word %0\n": : "i"(1));

但是,这会在生成的汇编程序文件中生成以下代码:

代码语言:javascript
运行
复制
.word #1

因此,我需要一种方法来传递一个在编译时已知的常量,而不需要在它前面添加'#‘。这有可能使用内联汇编程序吗?

编辑:

为了更清楚地说明我为什么需要这样做,我们将这样使用它:

代码语言:javascript
运行
复制
#define LABELS_PUT(b) asm(".word %0\n": : "i"((b)));

int func(void) {
    LABELS_PUT(1 + 2);

    return 0;
}

我不能使用".word 1“,因为每次调用宏LABELS_PUT时,值都会有所不同。

EN

Stack Overflow用户

发布于 2016-02-10 20:54:14

在GCC里,你可以这样做:

代码语言:javascript
运行
复制
asm __volatile__ (".word 0x1");

如果使用的是,则可以尝试:

代码语言:javascript
运行
复制
some_word: _asm{_emit 1000b}

它将传递到代码word常量1000 b。

您可以使用标签some_word访问

票数 -1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35325139

复制
相关文章

相似问题

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