Forum: Compiler & IDEs GCC Assembler ARM Makro


von romanua (Gast)


Lesenswert?

Hallo,

Ich moechte folgendes in ARM assembler machen:

Quelle:
code_abschnitt1
a=code_abschnitt2


Compilliert moechte ich es so haben, ob die Quelle so geschrieben war:

code_abschnitt2
code_abschnitt1

Was ich brauche, ist die Moeglichkeit Codeabschnitte zu kennzeichen und
sie dann an beliebigen Stellen platzen.

Wie macht man das? Ich habe schon GS Manual durch und  habe sie
entweder nicht verstanden (was mir mit GS manual oft passiert) oder
habe ich es uebersehen.


Danke im Vorraus.

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


Lesenswert?

Du musst .section's einführen und diese dann im Linkescript
entsprechend platzieren.

von romanua (Gast)


Lesenswert?

Hallo Joerg,

Danke fuer die Antwort.

Kannst Du mir erklaeren was .macro macht?

Wuerde es so gehen oder is es kompletter Bloedsinn?




test

cod_abschnitt1

.macro test
cod_abschnitt2
.endm

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


Lesenswert?

Macro ist eine einfache Ersetzung, das solltest du dir in
...zigtausend Dokumenten im Internet anlesen können.  Praktisch
jeder Assembler implementiert Makros (mehr oder minder gut).

Da man Makros erst benutzen kann, nachdem sie definiert worden
sind, gänge es höchstens so:

.macro  code1
cod_abschnitt1
.endm

.macro  code2
cod_abschnitt2
.endmf

code2
code1

Du hast dein Problem sehr dürftig beschrieben, sodass ich nicht
weiß, ob das bereits dein Problem lösen würde.  Allgemein kann
ich dir aber sagen, dass die Variante mit sections auf jeden
Fall funktionieren wird.  Auf diese Weise werden typischerweise
auch Dinge wie Interruptvektoren an die passende Stelle sortiert.
Dafür isses natürlich mehr Aufwand.

von romanua (Gast)


Lesenswert?

Ok Danke, .macro ist das, was ich brauche.


Ich wollte nur einen Codeabschnitt A hinter dem Abschnitt B
platzieren, obwohl ich Abschnitt A vor Abschnitt B eingetippt habe.
Wo im Speicher nicht wichtig. Mehr ist es nicht. Deswegen ist .section,
 glaube ich, mehr flexibilitaet als noetig.

>zigtausend Dokumenten im Internet.

Das kann sein. Hilft aber nur dann, wenn man weiss, was man sucht.
Aus GAS Manual habe ich eben nicht bzw. nicht sofort verstanden fuer
was .macro gut ist.

Danke nochmals fuer die Hilfe!

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.