0

次のコードの「_DBGR_ON_」のように、Makefile で定義された特定のマクロをプリプロセッサに渡し、それに応じてコードがアセンブルされるようにしたいと考えています。このオプションは、makefile で -D_DBGR_ON_ で定義し、Assembler フラグとして含めることにより、diab コンパイラ (powerpc 用の c クロス コンパイラ) で機能します。しかし、それをGCCに含める方法。

同じことをすると (ASFLAGS = -mregnames -D_DBGR_ON_.)、エラーが発生しました: 認識されないオプション `-_DBGR_ON_'

次に、ASFLAGS = -mregnames -D _DBGR_ON_ を試しましたが、「読み取り用に _DBGR_ON_ を開けません: そのようなファイルやディレクトリはありません」というメッセージが表示されました

-D オプションは GCC では無視されるため、助けてください。

-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_

.......等々..

4

1 に答える 1

0

gasこれは、GCC や C プリプロセッサよりも問題 だと思います。gas前処理自体は行いません (ただし、gcc最初に C プリプロセッサを呼び出すために実行することはできます)。 .ifndefgas、C プリプロセッサ ディレクティブ ( #ifndef) ではなく、アセンブラ ファイルで定義されたシンボルのレベルで機能するディレクティブです。

その場合:あなたが必要とするのASFLAGS--defsym _DBGR_ON_=1.

于 2011-04-18T23:03:25.447 に答える