Forum: Compiler & IDEs GCC Inline ASM: wie io.h (und andere .h) komfortabel nutzen?


von kxr (Gast)


Lesenswert?

das einschleusen von io Konstanten einzeln via constraints / %x  ist 
mühsam und unleserlich.

wenn man ein .S assembler file (großes S) compiliert, kann man dort 
#include <avr/io.h>  und C präprocessor ganz normal im Assember 
verwenden.
Via inline Assembler wird sowas wie '#include "xy.h"'  einfach 
ignoriert, obwohl es im .s file (-save-temps -fverbose-asm) erscheint.
How to?

oder wo gibts GNU assembler style .include files für die AVR µC ?

Gruß

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

kxr schrieb:
> oder wo gibts GNU assembler style .include files für die AVR µC ?

Gibt's einfach nicht.  Schieb das Zeug über constraints ("I") runter,
und gut is'.  Wenn du die Parameter nicht nummerierst, sondern mit
Namen versiehst (wie es seit GCC 4.x ja möglich ist), dann ist das
auch leserlich.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Jörg Wunsch schrieb:
> Wenn du die Parameter nicht nummerierst, sondern mit
> Namen versiehst (wie es seit GCC 4.x ja möglich ist)

Das ging doch schon früher?

kxr schrieb:

> Via inline Assembler wird sowas wie '#include "xy.h"'  einfach
> ignoriert, obwohl es im .s file (-save-temps -fverbose-asm) erscheint.
> How to?

Du musst den C-Präprozessor über dein s-file laufen lassen. Ergo 
brauchst du einen zweischrittigen make-Prozess von der C-Quelle zum 
o-File anststt einen einschrittigen (.c → .o):

.c → .s (-S)
.s → .o (-c -x assembler-with-cpp)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann L. schrieb:
> Jörg Wunsch schrieb:
>> Wenn du die Parameter nicht nummerierst, sondern mit
>> Namen versiehst (wie es seit GCC 4.x ja möglich ist)
>
> Das ging doch schon früher?

Kann mich nicht mehr ganz genau dran erinnern, seit wann.  Mir
war so, als wäre das seit GCC 4.x dabei, aber vielleicht ja schon
davor.  Hatte gerade keine Lust, das in alten Manuals zu
recherchieren.

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.