如何在 gnu 汇编程序中定义数据目录的路径?

How to define a path to a data directory in gnu assembler?

提问人:gfdjjrtiejo 提问时间:8/15/2023 最后编辑:Peter Cordesgfdjjrtiejo 更新时间:8/15/2023 访问量:30

问:

首先,我将所有数据与源代码放在同一目录中:

.image_01: .incbin "image_01.bin"
.image_02: .incbin "image_02.bin"

这当然是一团糟,也是一种不好的做法。因此,我将数据向上移动到一个目录并移动到一个数据目录中:

.image_01: .incbin "../data/image_01.bin"
.image_02: .incbin "../data/image_02.bin"

现在我的 src 目录很好很干净,但这里有一个问题,那就是违反了 DRY。

有没有办法定义某种变量,即字符串将其连接到我的数据文件的名称?即,?DATADIR="../data/".image_01: .incbin DATADIR + "image_01.bin"

汇编 包含 GNU 汇编程序 包含路径

评论

0赞 Peter Cordes 8/15/2023
在命令行上工作吗?该手册仅记录了它的工作原理。sourceware.org/binutils/docs/as/I.html .另一种可能性是 C 预处理器(命名您的文件而不是 build with)将字符串粘贴在一起,例如制作一个您可以使用的宏。如果你能想到一个,希望有一个不那么丑陋的名字。-I DIR.incbin.include.S.sgcc -cINCBIN_DATADIR("image_01.bin")
0赞 Peter Cordes 8/15/2023
gcc 内联汇编程序 incbin 似乎没有使用 -I 参数来确认它确实有效,甚至将其传递给汇编程序。(查询可能使用了与源文件不同的错误构建目录中的相对路径。as -I whatevergcc -I whatever -c foo.s-I
0赞 Peter Cordes 8/15/2023
在 NASM 和 GCC 中将 incbin 路径作为预定义宏的可能重复项
0赞 Peter Cordes 8/15/2023
如果你想使用纯粹的 GAS 东西,例如制作一个宏,可以做一个涉及其 arg 的路径,与某些东西连接起来,也许 GNU GAS 宏参数与其他标记连接起来?但我不确定这个问答是否能做到这一点,我没有对 GAS .macro 做太多事情.macro.incbin

答: 暂无答案