Gcc 如何在条件汇编期间将标志传递给预处理器
我想将Makefile中定义的某些宏传递给预处理器,如下面代码中的“\u DBGR\u ON\u”,以便相应地组装代码。通过在makefile中使用-D_DBGR_ON_定义此选项,并将其作为汇编器标志包含在内,此选项在diab编译器(powerpc的c交叉编译器)中工作。 但如何将其包含在GCC中 当我做同样的操作时(ASFLAGS=-mregnames-D_DBGR_ON_u.),我得到了一个错误:无法识别的选项“--u DBGR_ON_u” 然后,我尝试了ASFLAGS=-mregnames-D_DBGR_ON_,我得到了“无法打开_DBGR_ON_读取:没有这样的文件或目录” 请帮助,因为GCC中忽略了-D选项 我使用-D选项在Diab中执行条件汇编,编译。如何在GCC中实现它。我被困在这里了 问候,, 图拉西 startup.s文件的内容Gcc 如何在条件汇编期间将标志传递给预处理器,gcc,gnu-assembler,c-preprocessor,Gcc,Gnu Assembler,C Preprocessor,我想将Makefile中定义的某些宏传递给预处理器,如下面代码中的“\u DBGR\u ON\u”,以便相应地组装代码。通过在makefile中使用-D_DBGR_ON_定义此选项,并将其作为汇编器标志包含在内,此选项在diab编译器(powerpc的c交叉编译器)中工作。 但如何将其包含在GCC中 当我做同样的操作时(ASFLAGS=-mregnames-D_DBGR_ON_u.),我得到了一个错误:无法识别的选项“--u DBGR_ON_u” 然后,我尝试了ASFLAGS=-mregname
.globl _start
_start:
.ifndef _DBGR_ON_ # Flash mode
mfmsr r3
ori r3,r3,0x1040 # Set ME/IP flags
mtmsr r3
sync
.else
mfmsr r3
ori r3,r3,0x1000 # Set ME/IP flags
mtmsr r3
sync
.endif #_DBGR_ON_
…等等..我认为这更像是一个
gas
问题,而不是GCC或C预处理器gas本身不进行预处理(尽管可以通过gcc
运行它,以首先调用C预处理器).ifndef
是一个gas
指令,它在汇编文件中定义的符号级别工作,而不是一个C预处理器指令(#ifndef
)
在这种情况下:ASFLAGS
中需要的是--defsym\u DBGR\u ON=1