2010-11-08 2 views
2

Dans l'ensemble ARMensemble de bras: '#define' risque

bic r0, r0, #0x1f 

fonctionne très bien. maintenant je veux #define MODE 0x1f et changez le code ci-dessus à bic r0,r0, #MODE.

Il existe un risque ici. Si vous oubliez d'inclure le fichier d'en-tête où #define MODE 0x1f est défini, sans se plaindre gcc assemble, mais le résultat est mauvais, il se trouve compilateur traduit #MODE comme 0.

Je l'ai prouvé le problème est causé par « # ». comment pourrais-je dire au préprocesseur de ne pas manipuler "#" car ce # est utilisé par l'assemblage?

Merci

+0

vous ne pouvez pas utiliser #define dans l'assemblage ARM –

Répondre

3
  1. Je pense que les plus récents ARM docs spécifient # dans immediates en option, vous pouvez essayer d'utiliser r0 bic, MODE.
  2. Vous pouvez utiliser niveau d'assemblage définit:

    .equ MODE, 0x1F

    bic r0, r0, #MODE