2010-09-12 20 views
0

Je rencontre un problème avec l'assemblage de mon assemblage. J'utilise NASM pour l'assemblage, puis je le lier avec ld. Un problème mineur est que la directive GLOBAL ne fonctionne que si je définis la section .data qui .. je crois a quelque chose de raisonnable derrière elle, mais encore comment cela importe-t-il pour exporter des symboles? (j'ai décidé d'utiliser coff car c'était le format le plus similaire avec ce qui sortait de g ++ avec l'option -c). Le problème majeur est que même après avoir réussi à le lier, les appels conduisent à une adresse et la fonction n'est pas là. Merci pour votre temps de lecture et si vous aviez quelques conseils ou des mots-clés que je devrais google pour obtenir quelque chose sur les liens et les symboles, ce serait tout à fait génial.structure des fichiers objet

+1

Dans quel système d'exploitation et quelle architecture travaillez-vous? – llasram

+0

Windows XP, l'architecture ... eh bien ... est-ce que x86 est ce que vous avez en tête? – Pyjong

+0

Comme vous l'avez mentionné nasm, je pensais surtout à x86 vs x86-64 - depuis XP je devine 32 bits x86? – llasram

Répondre

1

Je n'ai pas utilisé nasm sur Windows, mais en regardant la sortie de nasm -hf je suppose que vous voulez le format win32, pas coff. Le format COFF est un format de fichier objet plus ancien dont le format PE-COFF (ou juste "PE") maintenant utilisé sous Windows est une version plus récente.

En ce qui concerne la raison pour laquelle vous devez spécifier une SECTION avant que vos directives GLOBAL ne prennent effet, je ne vois pas ce comportement. Est-il possible que vous ne déclariez pas votre GLOBAL avant l'étiquette? Ou peut-être que le symbole est émis, mais n'a pas pu fournir une liaison correcte si, par ex. il était prévu comme variable de données, mais l'espace était alloué dans la section .text.

+0

yep format win32 à peu près sauve la journée .. que je passerais autrement avec des essais et erreurs. Merci beaucoup. A propos de la directive globale, est-il possible que nasm génère une section par défaut? J'ai lu quelque part que masm le fait .. de toute façon, bien que mon problème soit résolu je suis toujours ouvert à quelques informations plus profondes sur la façon dont les formats d'objets fonctionnent – Pyjong