【发布时间】:2018-04-05 22:25:13
【问题描述】:
我有一堆幻数,我想将它们包含在 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 或其他任何方式从另一个文件生成一个文件。
【问题讨论】:
-
你也可以在 asm 文件上运行 C 预处理器,包括 only-#define C 头文件。
-
如果没有外部工具,答案是否定的。多年来,这一直是 NASM 论坛中的一个持续问题,如果没有一些外部解析,就无法做你想做的事。 NASM 有一个名为 h2incn 的基于贡献者的项目。许多外部选项 m4、cpp、sed 等。
-
@MichaelPetch - 如果您将其写为答案,它将被接受。