Polygot包含nasm / yasm和C的文件

时间:2017-10-25 00:37:13

标签: c assembly x86 nasm yasm

我有一堆魔术数字,我想包含在C程序和汇编文件中,由nasm或yasm编译。

在普通的C中,文件看起来像是一系列定义,例如:

#define BLESS   55378008
#define ANSWER        42
...

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

%define BLESS   55378008
%define ANSWER        42
...

唯一的区别是define之前的主导角色:C {1}}和<{1}} for nasm。

有没有办法编写一个polygot include,允许我将它包含在C和nasm中,只列出常量一次?

是的,我知道我可以使用#或其他来生成另一个文件。

1 个答案:

答案 0 :(得分:2)

NASM 本身无法在汇编代码中包含 C 头文件。这些年来一直是brought up in the NASM forum。您需要一个外部工具来将 C 头文件解析为可用于 NASM 程序集语法的内容。

假设与 NASM 兼容的第三方贡献是h2incn。我还没有对它进行足够彻底的测试,因此无法说它对所有用例都足够稳定或可用。

另一种方法是使用m4cpp等其他工具预处理文件,甚至用sed进行翻译