Nasm - mémoire read-only

Résolu
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 3 août 2004 à 19:49
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 8 août 2004 à 22:37
Bonjour,
je suis en train d'écrire des tutoriaux pour le site Coder-Studio (http://www.coder-studio.com/?page=tutoriaux) mais pour la création du tutorial 3 je me heurte à un problème.

Quand je compile, j'utilise une mini-librairie d'I/O que j'ai programmée en C et ASM. Je compile comme ça (ld est le linker de MinGW (Dev-C++), et gcc est le compilateur du même nom) :

gcc -c StdLib.c
nasm -fwin32 mon_prog.asm -o mon_prog.o
ld StdLib.o mon_prog.o libkernel32.a -o mon_prog.exe -nostdlib --entry=__start

Ce qui me permet d'utiliser ma lib (j'utilise un script, assemble_io.bat, vous pouvez récupérer le tout à http://www.coder-studio.com/tutoriaux/asm/asm_1.zip).

Bon, le problème maintenant :

Le code suivant ne plante à l'exécution :

section data use32 class=data
choix dd 5

section code use32 class=code
global __start

__start:
mov [choix], eax
ret

Si en revanche, je fais un mov eax, [choix], ça marche.

Si je compile le même code au format obj, ça fonctionne (mais je ne sais pas utiliser ce format avec ma lib :( ).

Je suppose donc que [choix] est en mémoire read-only :(

Donc, ma question : comment est-ce que je peux faire pour pouvoir écrire sur cette **** de variable globale [choix] ???

J'espère ne pas avoir été trop long, merci d'avances pr vos réponses.

Patience et longueur de temps font plus que force ni que rage....

9 réponses

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
3 août 2004 à 22:22
Oups, ben ne vous dérangez pas, j'ai réussi à résoudre mon problème, en remplaçant les directives section par des section .text et section .data
Merci qd même ^^

Patience et longueur de temps font plus que force ni que rage....
3
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
3 août 2004 à 22:22
Je vais ptet dire une betise, mais sait on jamais !
Si tu enlevais les crochets : mov choix, eax !?
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
3 août 2004 à 22:25
Ah alors tu pourrais m'expliker pkoi il fallait les crochets ?
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
3 août 2004 à 22:25
AlexMAN >> "choix" est un label, NASM le remplace donc à l'exécution par un nombre constant. Ce nobrem indique l'adresse où se trouve ma donnée, et en faisant [choix] je désigne donc la donnée elle-même.
Enfin, je ne suis pas sûr qd même que "choix" soit un nombre constant; avec les instructions JMP les labels sont remplacés par des nombres qui correspondent à combien ajouter à EIP pour atteindre l'instruction souhaitée; je sais pas si c'est pareil avec les datas, il me semble que non, mais si qq1 a la réponse, tant qu'à faire... ^^

Patience et longueur de temps font plus que force ni que rage....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
3 août 2004 à 22:31
ok ben jte remercie Funto

++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2004 à 22:20
AlexMAN> fais pas ca avec MASM
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
8 août 2004 à 22:23
ne pas faire mov [choix], eax ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2004 à 22:26
bah oui, enfin ce n'est pas la peine de mettre les crochets
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
8 août 2004 à 22:37
j'ai tjrs fait sans les crochets.
0
Rejoignez-nous