2016-11-29 7 views
0

Ich versuche, etwas Code für Arm zu zerlegen und zu modifizieren. Demontage zeigt einige Anweisungen mit Instruction Breite Bezeich zB:Arm Befehlsbreite Spezifizierer können nicht kompiliert werden

80002be: f44f 5360 mov.w r3, #14336 ; 0x3800 
80002c2: f2c4 0302 movt r3, #16386 ; 0x4002 
80002c6: f44f 5260 mov.w r2, #14336 ; 0x3800 
80002ca: f2c4 0202 movt r2, #16386 ; 0x4002 

aber wenn ich versuche, den Code zu modifizieren und montieren, Assembler nicht wie mov.w:

main.asm:5: Error: unexpected character `w' in type specifier 
main.asm:5: Error: bad instruction `mov.w r3,#14336' 

Ich habe versucht, die Angabe - mcpu = cortex-m4 -march = armv7-m-mthumb aber es wird nicht helfen. Irgendwelche Ideen?

+1

mit gcc? Ich weiß nur etwas über ARM, aber vielleicht funktioniert das nur so im "vereinheitlichten" Syntaxmodus (gegenüber der separaten Thumb-Only-Syntax) –

Antwort

3

Anweisungsbreite-Spezifizierer sind Teil der UAL-Syntax. Es scheint, dass Sie den GNU-Assembler verwenden, der (abhängig von -marm/-mthumb oder den entsprechenden Direktiven) die älteren separaten ARM/Thumb-Syntax (eine eher entspannte Interpretation) verwendet. Wenn Sie die UAL-Funktionen ordnungsgemäß verwenden möchten, müssen Sie sie zuerst mit der Direktive .syntax unified einrichten.

+0

Danke! es half –

Verwandte Themen