Forum: Compiler & IDEs GCC Assembler .section


von romanua (Gast)


Lesenswert?

Hallo,

ich bin jetzt am Arm Assembler lernen. Die frage ist eher algemein zum
GNU Assembler.

Ich moechte bestimmte Teile des Programs auf bestimmte Adressen im
Flash ablegen.

Ich habe jetzt die Dokus zum GNU AS und GNU LD (linker)   durchgelesen
und es so verstanden habe:

man soll in der Input-Datei das Program  mithilfe der Direktive
".section" aufteilen.

Z.B
....
.section teil1
ldr r0, =0x1

.section teil2
ldr r1, =0x2
....

Dann aber beim linken soll man im Linkerscript festsetzen, welche
Sektion auf welche Adresse gehoert.

So, wie ich das beschriebn habe, geht leider nicht. Wenn ich die Datei
Kompiliere, bekomme ich eine leere Object-Datei. Das heisst, wenn ich
die Datei mit "objdump -hd" disassembliere, ist da nur der
Section-Header zu sehen und kein Code.


Wenn ich die ".section"s aus der Quelldatei entferne, ist das Code
wohl in der Object-Datei, aber nicht auf die richtigen Stellen beim
linken zu kriegen.

Hat jemand einen Tip fuer mich?

mfg,
r.

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


Lesenswert?

Vielleicht machst du ja mal ein nachvollziehbares
Beispiel draus?

von romanua (Gast)


Lesenswert?

@Jörg Wunsch

Hallo, vielen Dank fuer die Antwort.

Als ich was nachvollziehbares posten wollte, habe ich bemerkt, wo das
Problem lag.

Ich habe die Sektionen mit .section einrichen wollen. Der Assembler hat
diese Sektionen als nicht ausfuehrbare Sektionen erkannt. Jetzt geht es,
weil ich folgendes verwende:

 .section .teil1, "x"

"x" steht fuer "executable". Habe beim lesen des Manuals nicht
richtig aufgepasst, dass man Flags setzen muss.

Danke,
r.

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


Lesenswert?

> Als ich was nachvollziehbares posten wollte, habe ich bemerkt, wo
> das Problem lag.

Das nennt man code review. :-)

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.