Polygot包含nasm / yasm和C的文件

Bee*_*ope 5 c x86 assembly nasm yasm

我想在C程序和要由nasm或yasm编译的程序集文件中包括很多魔术数字。

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

#define BLESS   55378008
#define ANSWER        42
...
Run Code Online (Sandbox Code Playgroud)

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

%define BLESS   55378008
%define ANSWER        42
...
Run Code Online (Sandbox Code Playgroud)

唯一的不同是C和nasm 的define:前面的主角。#%

有什么办法可以编写一个polygot include,它可以让我将它同时包含在C和nasm中,并且只列出一次常量?

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

Mic*_*tch 5

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

可能与NASM兼容的此类第三方贡献之一是h2incn。我还没有对它进行足够彻底的测试,因此不能说它在所有用例中都足够稳定或可用。

另一种方法是预先处理的文件与其他工具一样m4cpp或者甚至与翻译sed