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

Gast #1073036
Lesenswert?

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 #1073200
Lesenswert?

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 #1073278
Lesenswert?

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.
#1073383
Lesenswert?

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....
#1073395
Lesenswert?

Ü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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren