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....