我正在用GCC编译C代码,并在Windows上用NASM组装一些x86代码。
现在,GCC默认情况下(我无法找到更改此选项的选项)为所有外部符号名称(和预期名称)添加下划线_
。
我需要这个汇编代码才能在Windows和Linux上使用GCC,并且希望尽可能地避免黑客攻击(以及代码重复;我首先为Windows / Linux创建了单独的.s
文件。 / p>
我在NASM中发现了(并使用过)--prefix
标志。现在对于某些符号,我希望NASM将它们视为而不使用前导下划线(现在的确切情况是我需要在没有前导下划线的链接描述文件中引用入口点)。因此,这里的问题是如何覆盖每个符号NASM的--prefix
/ --postfix
标志。
随意将此视为XY问题。例如,如果有一种方法可以为C设置GCC的修改方案,那就很好了。
答案 0 :(得分:1)
dialog.open(...).afterClosed().subscribe( response => {
box.state = response
}
和其他一些东西。
该文件(libc_win32.in)包含在" master"包含文件(libc.inc):
%define printf _printf
%define puts _puts
%define scanf _scanf
我设置符号并在命令行中包含文件:
%ifndef LIBC_INC
%define LIBC_INC
%ifdef win32
%include 'libc_win32.inc'
%elifdef win64
%include 'libc_win64.inc'
%elifdef elf32
%include 'libc_elf32.inc'
%elifdef elf64
%include 'libc_elf64.inc'
%else
; %error "libc.inc"
%endif
%endif
或
nasm -fwin32 -dwin32 -plibc.inc ...
有一个名为nasm -felf32 -delf32 -plibc.inc ...
的预定义宏,但它只能在宏内部工作,而不能在程序启动时工作。