2013-09-27 4 views
1

Je suis en train de ce qui suit:ARM assembleur en ligne de GCC

int main() 
{ 
    unsigned int result = 0; 

    unsigned int op1 = 10, op2 = 20; 
    asm volatile ("uadd8 %0, %1, %2" : 
       "=r" (result) : 
       "r" (op1), "r" (op2)); 

} 

Je veux compiler ce Cortex A9 J'utilise GNU GCC bras toolchain.

Mais je continue à obtenir cette erreur:

arm-none-linux-gnueabi-gcc test_2.c 

Assembler messages: 

Error: selected processor does not support ARM mode `uadd8 r4,r3,r2' 

J'ai essayé en forçant le mode de pouce en ajoutant .code 16 aussi, mais pas de chance.

Quel est le problème ici?

+0

Pouvez-vous poster la ligne de commande gcc aussi? Les drapeaux sont pertinents dans ce cas. –

+0

@JanHudec: J'ai essayé -mthumb -mthumb -interwork -march = armv7-a et -mcpu = cortex-a9 – user2807984

+0

Les questions peuvent être éditées ici. S'il vous plaît, modifiez l'information dans la question elle-même. Et mentionne la version gcc aussi, s'il te plait. –

Répondre

1

La raison en est que l'architecture ARM par défaut de votre compilateur n'implémente pas cette instruction. Le uadd8 est pris en charge en mode Thumb pour les architectures ARMv6T2 et ARMv7 et en mode ARM pour ARMv6 et ARMv7. Par conséquent, vous devez passer l'option -march= appropriée à gcc. Par exemple:

-march=armv6 
-march=armv6t2 -mthumb 
-march=armv7-a 
-march=armv7-a -marm 

Vous pouvez vérifier ce qui est la valeur par défaut (ou définis par des options) architecture pour la compilation avec:

arm-elf-gcc -E -dM -x c /dev/null | grep ARM_ARCH 
+0

comme je l'ai mentionné dans le commentaire que j'ai essayé avec -march = armv7-a mais j'ai toujours cette erreur – user2807984

+0

Quelle est la sortie de 'arm-none-linux-gnueabi-gcc --version'? Peut-être que vous auriez besoin de mettre à jour votre chaîne d'outils. Par exemple. Sourcery CodeBench Lite 2012.09-64) 4.7.2 fonctionne bien avec ces options. – chill

+0

Merci l'homme :) J'ajoutais ce drapeau de mars aux drapeaux d'assembleur au lieu des drapeaux de gcc ..Merci :) – user2807984

Questions connexes