0
LDR     r2, =0x0 :OR: (Region_64K << 1) :OR: Region_Enable

上記のコマンドは何をしますか? それを使用するとエラーが発生しますが、armcc問題なくコンパイルされますarm-none-eabi-gcc

命令に続くガベージ -- `ldr r2,=0x0:OR:(Region_64K<<1):OR:Region_Enable'

gcc のどこで

Region_Enable = 0b1
Region_64K   = 0b01111

ARMCCで

Region_Enable EQU 2_1
Region_64K   EQU 2_01111
4

1 に答える 1

1

これは、式内のビット演算子用の armasm の構文です。GNU アセンブラーの場合は、|代わりに:OR:.

|armasm は、何らかの理由でエイリアスとして使用することは非推奨であると主張しているため ( &for:AND:^for:EOR:は明らかに問題ありませんが)、両方のツールチェーンとの互換性を維持したい場合は、何らかのプリプロセッサ マジックに頼る必要があるかもしれません。

于 2014-10-01T12:43:14.407 に答える