internen Umzug nicht behoben

ich habe vor kurzem angefangen assembler-Programmierung für arm-cores. Meine erste kleine demos, die nur mit den .text-Abschnitt, lief ohne Probleme.

Als eine logische Erweiterung wollte ich die Struktur der assembler-code in die üblichen Abschnitte: .text .Daten .bss .

Also schrieb ich das folgende einfache Programm:

 .globl _start

 .section .text

 _start:
     b   main
     b   .
     b   .
     b   .
     b   .
     b   .
     b   .
     b   .  


 main:
    ldr r0, x
    nop

 .section .data

 x:  .word  0xf0f0f0f0

 .end

Aber

  /opt/arm/bin/arm-as -ggdb -mcpu=arm7tdmi demo.s -o demo.o

beendet sich mit dem Fehler

 prog.s: Assembler messages:
 prog.s:17: Error: internal_relocation (type: OFFSET_IMM) not fixed up
 make: *** [prog.o] Error 1

Ich habe keine Ahnung, warum der assembler meckert über den Umzug, weil ich dachte, das ist die Aufgabe des Linkers. Ich könnte mir vorstellen, dass ich muss sagen, das assembler das meine .data-Abschnitt ist nicht sich an die Letzte Erinnerung postion bei der Montage der Bühne, aber ich kann nicht finden, alles im Zusammenhang.

Obwohl ich einen Weg gefunden, um den code korrekt montiert, durch den Austausch

 .section .data

durch

 .org .

dass ist keine befriedigende Lösung. Vor allem in Anbetracht der Tatsache, dass die gas-Unterlagen highlight der Sinn dieses Abschnitts.

Vielleicht hat jemand von Euch Experten kann mir helfen, zu gewinnen einige Weisheit

InformationsquelleAutor user1146332 | 2012-04-10
Schreibe einen Kommentar