Gast
#4784513
Hallo zusammen, ich schreibe gerade an einer Assemblerfunktion für einen CortexM4 unter DAVE4. Normalerweise ist DAVE so konfiguriert, dass der Code in Thumb-Instruktionen übersetzt wird (Falg "-mthumb"). Ich stoße immer wieder auf das Problem, dass Befehle wie "LDRSH r4, [r0]" mit der Fehlermeldung "Thumb does not support this addressing mode" nicht akzeptiert werden. (Paradox: "LDRSH r4, [r0, +r7]" arbeitet problemlos, benötigt aber mehr Takte) Einige bedingte Befehle werden mit einer ähnlichen Meldung zurückgewiesen. Laut der ARM-Doku sollte der o.g. Befehl auf einem Cortex M4 laufen. (Siehe: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/BABGIFCI.html) Momentan scheitere ich daran dem GCC mitzuteilen, dass er eine Funktion nicht im Thumb, sondern im ARM-(Thumb2?)Befehlsatz erzeugen soll. Dazu habe ich dem Assembler und C-Compiler das zusätzliche Flag "-mthumb-interwork" übergeben. Weiterhin habe ich in der Assemblerdatei die Optionen ".arm" und ".marm" getestet, leider ohne Erfolg. .text //.arm // Endet mit der Meldung, das es ein Thumb-only Prozessor ist //.marm // kennt der GCC wohl nicht "unknown pseudo-op" .global convdat .func convdat convdat: LDRSH r4, [r0] ... .endfunc Meine Fragen: Liegt das Problem wirklich am Thumb-Modus? Falls ja: Wie kann ich dem GCC mitteilen, dass ich für die in der Assemblerdatei enthaltenen Funktionen den vollständigen Befehlssatz nutzen möchte? Grüße Stephan