Assembler Code in *.c File integrieren, nur wie im CCE?

Gast #1073036
In meinem C-Büchlein welches ich habe, steht, dass man Assembler Code 
ganz einfach in einem *.c File einbinden kann, nämlich so:
1
asm("instruction");

Nur leider funktioniert das in meinem Code Composer V3 nicht.
Es gibt beim Kompilieren eine Fehlermeldung.

Weiss jemand von euch wie man das im CCE machen kann?
Gast
prinzipiell ist asm(); erstmal eine Funktion, ohne die Fehlermeldung 
jetzt zu kennen ist es evt möglich, dass Du die entsprechende lib mit 
dieser funktion vergessen hast!?
Gast
Bei mir bringt er die Fehler:


"Illegal mnemonic specified"
mov  #0xFFFE,R12

"Symbol mov has already been defined"
mov  @R12,PC

"Illegal mnemonic specified"
mov  @R12,PC


PS: Wie kann man im CCE bequem nachschauen wie viel Flash das Programm 
benötigt?
Gast
Ist merkwürdig.
Also mit "nop" funktioniert es.

Es ist eben so, dass ich vorher IAR Workbench benutzte und da 
funktionierte dies super.

Muss ich das jetzt versuchen umzuschreiben?
Gast
Hmm, und wie mache ich das?
Hab von Assembler keine Ahnung.

Die Funktion ist einfach die, dass der ProgramCounter an den absoluten 
Programmanfang springt, also vor die Initialisierung der Variablen etc.
Also ein "Kaltstart"? Kannst ja auch den Watchdog abschießen, dann hast 
du einen kompletten Neustart...
z.B. mit

WDTCTL = 0xDEAD;

Problem an deinem Code ist, dass er nicht atomar ist, der C-Compiler 
kann also im ungünstigsten Fall die Befehle so verteilen, dass sie nicht 
direkt hintereinander stehen....du müsstest dann eine extra asm-Datei 
schreiben, da eine Funktion deklarieren und diese dann aus C aufrufen. 
Wie das geht, steht im User Guide des CCE v3.

Achso, CCE zeigt leider erst beim Flashen an, wie groß der Code geworden 
ist....hab da auch noch nix anderes gefunden. Höchstens TI-txt file 
erzeugen lassen und nachschauen....
Übrigens, so klappts im CCE:
1
asm(" mov.w #0xFFFE,R12");

Wichtig ist der Freiraum vor dem mov. Auszug aus dem User Guide:

"The inserted code must be a legal assembly language statement. Like all 
assembly language statements, the line of code inside the quotes must 
begin with a label, a blank, a tab, or a comment (asterisk or 
semicolon)."

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.