我想将一个字符串附加到 gcc 汇编器中的宏参数中。这是我目前拥有的:
以下宏将文件嵌入到我的代码中,效果很好:
.macro add_resource resource_name, file_name
.global \resource_name
.type \resource_name, @object
.balign 4
\resource_name:
.incbin "\file_name"
end_\resource_name:
.global size_\resource_name
.type size_\resource_name, @object
.balign 4
size_\resource_name:
.int end_\resource_name - \resource_name
.endm
.section .rodata
add_resource icon, "icon.png"
用途:
#include <stdio.h>
extern unsigned char icon[];
extern unsigned int size_icon;
int main() {
printf("magic bytes: %.3s, size: %u", icon+1, size_icon);
return 0;
}
在生成的可执行文件上运行
nm
:
0000000000f99b9d r end_icon
0000000000002020 R icon
0000000000f99ba0 R size_icon
程序打印“magic bytes: PNG, size: 16350077”。
但是名称“size_icon”看起来很糟糕,我想附加“size”,而不是前置它,这将使其成为“icon_size”。但我不知道该怎么做,并且在文档中找不到任何有用的东西。有人可以帮忙吗?