【发布时间】:2016-02-10 20:21:32
【问题描述】:
我有以下问题:我想使用内联汇编程序从我的 C 源文件中使用以下汇编程序代码:
.word 1
我得到的最接近的是使用这个内联汇编代码:
asm(".word %0\n": : "i"(1));
但是,这会在生成的汇编文件中产生以下代码:
.word #1
所以我需要一种方法来传递编译时已知的常量,而无需在其前面添加“#”。这可以使用内联汇编器吗?
编辑:
为了更清楚为什么我需要这个,这就是它的使用方式:
#define LABELS_PUT(b) asm(".word %0\n": : "i"((b)));
int func(void) {
LABELS_PUT(1 + 2);
return 0;
}
我不能使用“.word 1”,因为每次调用宏 LABELS_PUT 时值都会不同。
【问题讨论】:
-
RTFM。
asm(".word 1\n": : :);有什么问题?请阅读文档和/或教程。 -
那是给 ARM 的?这是您无法使用单独编译的 .s 更轻松地完成的事情吗?
-
我已经编辑了问题以明确为什么我不能使用“.word 1”
-
您不能通过内联
.word指令来传递常量。您只是在函数中插入无效指令。你到底想完成什么?
标签: c gcc inline-assembly