mikrocontroller.net

Forum: Compiler & IDEs GCC Assembler .section


Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht machst du ja mal ein nachvollziehbares
Beispiel draus?

Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Als ich was nachvollziehbares posten wollte, habe ich bemerkt, wo
> das Problem lag.

Das nennt man code review. :-)

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.