Forum: Compiler & IDEs MPLAB X, XC8 - Inline Assembler #asm, #endasm Statements


von Max (Gast)


Lesenswert?

Hallo Leute,

ich bin gerade dabei, mich in MPLAB X mit dem XC8-Compiler 
einzuarbeiten.

Aktuell habe ich folgendes Problem bei der Verwendung von inline 
Assembler:

Folgendes funktioniert nicht:
(MPLAB unterstreicht alles rot und gibt beim compilieren einen Fehler 
aus:
error: (876) syntax error)
1
#asm
2
PSECT  vect_psect,class=CODE
3
.
4
.
5
.
6
#endasm

wenn ich jede einzelne Zeile in ein separates asm(".."); - Statement 
verpacke dann compiliert es ohne Fehler:
1
asm("PSECT  vect_psect,class=CODE");

Laut Compiler Manual gibt es die #asm/#endasm Statements aber man liest 
in diversen Foren dass dieses Verhalten öfters bei jemandem aufgetreten 
ist - aber leider keine Lösung dazu. Das ganze ist irgendwie nervig,weil 
es bei mehreren Zeilen unübersichtlich wird, bzw. wenn es laut Manual 
funktionieren sollte dann erwarte ich auch dass es funktioniert - wer 
weiß was im Hintergrund sonst alles anders läuft...

Hat da jemand vielleicht eine Idee?

Viele Grüße

Max

von Teo D. (teoderix)


Lesenswert?

Wenn CCI aktiviert ist, wirst du damit leben müssen!?

von Chris B. (dekatz)


Lesenswert?

Compiler auf C90 umstellen.

In der Dokumentation (Readme_XC8_for_PIC.htm) des XC8 findet man unter
4. Migartion issues:

"
In-line assembly The #asm ... #endasm form of inline assembly is no 
longer accepted when building for C99. The asm() form of inline assembly 
is now the only way to embed assembly instructions inline with C code.
"

von Max (Gast)


Lesenswert?

CCI ist unter "XC8 Global Options"-> "XC8 Compiler" -> "Use CCI Syntax" 
abgeschaltet, und das Problem existiert dennoch.

von Max (Gast)


Lesenswert?

@Chris - super, das hat mich weiter gebracht. Es compiliert jetzt 
fehlerfrei - etwas unschön ist, dass MPLAB dennoch die 
Assemblersequenzen rot unterwellt, aber damit kann ich notfalls leben, 
bzw. gäbe es hiefür auch noch eine Lösung?

Bzw. ich glaube ich bleibe bei C99 und lebe mit den asm("") Statements - 
wichtig ist, dass ich jetzt weiß warum es so ist wie es ist - DANKE!

Viele Grüße

Max

von Teo D. (teoderix)


Lesenswert?

Max schrieb:
> gäbe es hiefür auch noch eine Lösung?

Bei solchen Fehlern in der IDE (kommt leider öfters vor), empfiehlt 
sich erstmal ein Neustart.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.