Comment obtenir l'adresse d'un label?Flat Assembler: Comment obtenir l'adresse d'un label?
je veux obtenir l'adresse d'une étiquette en assembleur plat sans ajout de code supplémentaire
exemple:
label1: ;is at adress 0
db 1h,2h,3h,4h,5h ;some data
label2: ;is at adress 5 because label1 has 5 bytes of data
i pourrait imprimer l'adresse à l'écran de la console mais cela ajoute encore la taille au programm et change le résultat. Je suis conscient de l'utilisation de l'étiquette, mais je veux le numéro d'adresse brute.
Utilisez un débogueur ou quelque chose comme 'objdump' pour obtenir l'adresse de la table des symboles. Les adresses d'étiquettes ne sont stockées nulle part en dehors de la table de symboles si vous ne les utilisez pas (par exemple, en tant que cible de saut, adresse de chargement/stockage, opérande immédiat ou données (par exemple, '.dd label2') –
Ok. Il est encore temps de modifier mon premier commentaire et de supprimer ceux qui sont maintenant obsolètes Notez qu'il serait plus exact de dire qu'il y a 5 octets de données entre 'label1' et' label2', les labels n'ont pas de taille associée (sauf si vous utilisez MASM ou TASM, où db/dw/dd après une étiquette implique magiquement la taille de l'opérande pour les instructions qui utilisent cette étiquette dans un opérande de mémoire) –
De toute façon, juste pour clarifier, vous ne voulez pas obtenir l'adresse –