relocalisation pas fixé jusqu'à

j'ai récemment commencé la programmation assembleur pour des cœurs arm. Ma première petite démos, seulement avec le .texte de la section, a fonctionné sans aucun problème.

Comme une extension logique je voulais structure du code assembleur dans les rubriques habituelles: .texte, .de données, .sev .

Donc j'ai écrit ce programme simple:

 .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

Mais

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

se termine avec l'erreur

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

Je n'ai aucune idée de pourquoi l'assembleur se plaint de déménagement, parce que j'ai pensé que c'est la tâche de l'éditeur de liens. Je ne pouvais imaginer que je dois dire à l'assembleur que mon .les données de la section n'est pas situé à la finale de la mémoire de la position du montage de la scène, mais je ne peux pas trouver tout ce qui est lié.

Même si j'ai trouvé un moyen d'obtenir le code assemblé correctement, en remplaçant

 .section .data

par

 .org .

qui n'est pas une solution satisfaisante. Surtout compte tenu du fait que le gaz de documentation de mettre en évidence le sens de la présente section.

Peut-être que quelqu'un de vous les experts peuvent m'aider à acquérir une certaine sagesse

OriginalL'auteur user1146332 | 2012-04-10