сборка руки: риск '#define'

В сборке ARM

bic r0, r0, #0x1f

работает отлично. теперь я хочу #define MODE 0x1f и изменить приведенный выше код на bic r0,r0, #MODE.

Здесь есть риск. Если вы забудете включить заголовочный файл, в котором определено #define MODE 0x1f, gcc ассемблируется без проблем, но результат неверный, получается, что компилятор переводит #MODE как 0.

Я доказал, что проблема вызвана "#". как я могу сказать препроцессору не обрабатывать «#», поскольку этот # используется сборкой?

Спасибо


person richard    schedule 08.11.2010    source источник
comment
вы не можете использовать #define в сборке ARM   -  person A Person    schedule 12.08.2011


Ответы (1)


  1. Я думаю, что самые последние документы ARM указывают # в непосредственных выражениях как необязательные, поэтому вы можете попробовать использовать bic r0, MODE.
  2. Вы можете использовать определения на уровне сборки:

    .equ РЕЖИМ, 0x1F

    бик r0,r0, #РЕЖИМ

person Igor Skochinsky    schedule 15.02.2011