PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR-GCC-Assembler pseudo opcodes



yaro
13.07.2009, 20:30
Hallo Leute,
ich programmiere gerade eine ASM-Funktion und mochte sie in mein GCC-Projekt einbinden. Allerdings erkennt der gcc-Assembler die AVRASM-opcodes leider nicht...
Kann man das irgendwie ändern?
Kennt sonst jemand eine Seite, wo man die gcc-Assembler pseudo opcodes finden kann?

Gruß, Yaro

Besserwessi
13.07.2009, 22:03
Wenn man WINAVR nutz, sollte sich die Beschreibung etwa dort befinden:
C:/WinAVR-20070525/doc/binutils/as.html/Pseudo-Ops.htm
gg.f die Version anpassen.

yaro
13.07.2009, 22:23
Danke sehr! Ich habe zwar inzwischen eine ähnliche seite im Internet gefunden, die war aber sehr mangelhaft.

Gruß, Yaro

SprinterSB
13.07.2009, 23:05
Der GNU-Assembler kennt den kompletten Befehlssatz der AVR-Controller. Wo ist das Problem?

yaro
13.07.2009, 23:13
Das problem ist z.B. wen man pseudo opcodes von avrasm benutzen möchte. z.B. ".DEF ausdruck = register" das geht bei gcc nicht.
oder z.B. die Funktion "LOW(...)" dies heißt bei gcc "lo8(...)".
gibt bestimmt noch andere Beispiele (bin aba noch nicht auf sie gestoßen)

Gruß, Yaro

SprinterSB
14.07.2009, 09:10
Der GNU-Assembler ist /etwas/ älter als der Atmel-AVR-Assembler und die Direktiven heissen wie eh und je: .text, .section, .macro, .endm, .type, .size, ...

Eine Assembler-Quelle unabhängig vom verwendeten Assembler zu halten sollte möglich sein, der Lesbarkeit der Quelle aber nicht unbedingt förderlich sein.

Im GNU-Assembler kannst du den C-Präprozessor verwenden (im Atmel-Assembler übrigens auch) um textuelle Ersetzungen vorzunehmen.

Des weiteren bietet der GNU-Assembler eine sehr mächtige Makro-Sprache per .macro, die weit über normalen, textuellen Ersatz hinausgeht.

Du hast also die möglichkeit, per #define LOW() oder .macro LOW auf GNU-Syntax abzubilden.