5

我有一堆幻数,我想将它们包含在 C 程序和由 nasm 或 yasm 编译的程序集文件中。

在纯 C 中,该文件看起来像是一系列定义,例如:

#define BLESS   55378008
#define ANSWER        42
...

在 nasm 或 yasm 中,相同的包含可以实现为:

%define BLESS   55378008
%define ANSWER        42
...

唯一的区别是 : 之前的前导字符define用于#C 和%nasm。

有什么方法可以编写一个 polygot 包含,允许我将它包含在 C 和 nasm 中,并且只列出一次常量?

是的,我知道我可以只使用sed或从另一个文件生成一个文件。

4

1 回答 1

5

NASM本身无法在汇编代码中包含C头文件。多年来,这已NASM论坛中提出。您将需要一个外部工具来将C头文件解析为可用于NASM汇编语法的内容。

假设与NASM兼容的此类第 3 方贡献之一是h2incn. 我没有对它进行足够彻底的测试,所以不能说它对于所有用例都足够稳定或可用。

另一种方法是使用其他工具预处理文件,例如m4,,cpp甚至翻译sed

于 2017-12-07T19:32:54.173 回答