Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gcc 如何在条件汇编期间将标志传递给预处理器_Gcc_Gnu Assembler_C Preprocessor - Fatal编程技术网

Gcc 如何在条件汇编期间将标志传递给预处理器

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

我想将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文件的内容

    .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