【问题标题】:How to pass flags to the preprocessor during Conditional Assembly如何在条件汇编期间将标志传递给预处理器
【发布时间】:2011-04-18 10:22:00
【问题描述】:

我想将 Makefile 中定义的某些宏传递给预处理器,如以下代码中的“_DBGR_ON_”,以便相应地组装代码。此选项在 diab 编译器(用于 powerpc 的 c 交叉编译器)中工作,方法是在 makefile 中使用 -D_DBGR_ON_ 定义它并将其包含为汇编器标志。 但是如何将它包含在 GCC 中。

当我做同样的事情时(ASFLAGS = -mregnames -D_DBGR_ON_.),我得到了错误:无法识别的选项 `-_DBGR_ON_'

然后,我尝试了 ASFLAGS = -mregnames -D _DBGR_ON_,我得到“无法打开 _DBGR_ON_ 进行阅读:没有这样的文件或目录”

请帮忙,因为 -D 选项在 GCC 中被忽略了。

我在 Diab 中使用 -D 选项进行条件汇编编译。如何在 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_

.......等等..

【问题讨论】:

    标签: gcc gnu-assembler c-preprocessor


    【解决方案1】:

    我认为这比 GCC 或 C 预处理器更像是一个gas 问题。 gas 本身不进行预处理(尽管它可以通过 gcc 运行以首先调用 C 预处理器)。 .ifndefgas 指令,它在汇编程序文件中定义的符号级别上工作 - 不是 C 预处理器指令 (#ifndef)。

    在这种情况下:您的ASFLAGS 中需要的是--defsym _DBGR_ON_=1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多