www.mikrocontroller.net

Forum: Compiler & IDEs Assembler != Assembler?


Autor: Marcus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich grübel gerade darüber nach, warum der avr-asm folgenden Code nicht
übersetzen kann, obwohl die Befehle in jeder Assemblerreferenz
aufgelistet sind.
Würde mich freuen, wenn mir jemand mal einen Hint geben könnte, was
hier falsch läuft. Danke!


;***** Specify Device
.device AT90S1200

;***** I/O Register Definitions
.equ  SREG  =$3f
.equ  GIMSK  =$3b
.equ  TIMSK  =$39

Das sagt mir der Assembler dazu:
avr-gcc -mmcu=at90s1200 -I. -g   -Os -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=avr910.s  -std=gnu99
-Wp,-M,-MP,-MT,avr910.o,-MF,.dep/avr910.elf.d  avr910.s  --output
avr910.elf -Wl,-Map=avr910.map,--cref    -lm
1200def.inc: Assembler messages:
1200def.inc:38: Error: unknown pseudo-op: `.device'
1200def.inc:41: Error: expected comma after "SREG"
1200def.inc:41: Warning: rest of line ignored; first ignored character
is `='
1200def.inc:41: Warning: rest of line ignored; first ignored character
is `3'
1200def.inc:42: Error: expected comma after "GIMSK"
1200def.inc:42: Warning: rest of line ignored; first ignored character
is `='
1200def.inc:42: Warning: rest of line ignored; first ignored character
is `3'
1200def.inc:43: Error: expected comma after "TIMSK"
1200def.inc:43: Warning: rest of line ignored; first ignored character
is `='
1200def.inc:43: Warning: rest of line ignored; first ignored character
is `3'
1200def.inc:44: Error: expected comma after "TIFR"
1200def.inc:44: Warning: rest of line ignored; first ignored character
is `='
1200def.inc:44: Warning: rest of line ignored; first ignored character
is `3'
1200def.inc:45: Error: expected comma after "MCUCR"
1200def.inc:45: Warning: rest of line ignored; first ignored character
is `='
1200def.inc:45: Warning: rest of line ignored; first ignored character
is `3'

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In jeder Befehlsreferenz eben nicht, sondern nur in der des
Atmel-Assemblers.

Der gas (GNU assembler) hat eine andere Pseudobefehlssyntax (nämlich
eine Unix-typische).  Die hat er übrigens völlig unabhängig vom
Prozessor, also auch unter Unix/i386 sieht ein Assemblerprogramm um
einiges anders aus als z. B. unter DOS/Windows.

Die AVR-Befehle selbst sind dabei allerdings gleich.

Autor: Marcus M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

Danke ich begebe mich dann mal auf die Suche nach den
Präprozessordirektiven.
Ich hab bisher Assembler nur im Zusammenhang mit Atmel und 8085er
gesehen.

Danke

Marcus

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorsicht, Präprozessor ist was anderes als Pseudo-Ops.

In der Tat läßt man beim GCC in der Regel auch die Assemblerfiles
durch den Präprozessor laufen.  Damit werden dann Dinge wie #include
<avr/io.h>, #define usw. abgehandelt.  Der standardmäßige Suffix für
Assemblerfiles, die durch den Präprozessor gehen sollen, ist .S (ein
großes S).  Assembliert werden sie dann durch Aufruf des Compilers (!
-- nicht des Assemblers).

Die Pseudo-Ops sind bei der GNU Assembler Doku (Info-Files, TkInfo
benutzen) beschrieben.  Leider sind die AVR-spezifischen Operatoren
(insbesondere lo8 und hi8) nirgends dokumentiert worden. :-(

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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