MPLAB X, XC8 - Inline Assembler #asm, #endasm Statements

Gast #6214252
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
#6214317
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.
"
Gast #6214349
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

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