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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Max (Gast)


Bewertung
0 lesenswert
nicht 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)
#asm
PSECT  vect_psect,class=CODE
.
.
.
#endasm

wenn ich jede einzelne Zeile in ein separates asm(".."); - Statement 
verpacke dann compiliert es ohne Fehler:
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)


Bewertung
0 lesenswert
nicht lesenswert
Wenn CCI aktiviert ist, wirst du damit leben müssen!?

von Chris B. (dekatz)


Bewertung
0 lesenswert
nicht 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)


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

von Max (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.