Bonjour,
Je possède une fonction C++ qui me permet d'afficher les registres et qui est appelée depuis le code assembleur. Cependant, à l'exécution (La compilation se passe sans problème), rien ne s'affiche, du coup, je ne vois pas où est le problème =/
La fonction afficherRegistres :
et voici le simple code ASM qui me permet d'appeler la fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 extern "C" void afficherRegistres(unsigned edi, unsigned esi, unsigned ebp, unsigned esp, unsigned ebx, unsigned edx, unsigned ecx, unsigned eax) { cout << "-------------------------------------" << endl; ios_base::fmtflags old_options = cout.flags(ios_base::hex|ios_base::uppercase); cout.fill('0'); cout << " EAX : 0x"; cout.width(8); cout << eax << " ESI : 0x"; cout.width(8); cout << esi << endl; cout << " EBX : 0x"; cout.width(8); cout << ebx << " EDI : 0x"; cout.width(8); cout << edi << endl; cout << " ECX : 0x"; cout.width(8); cout << ecx << " EBP : 0x"; cout.width(8); cout << ebp << endl; cout << " EDX : 0x"; cout.width(8); cout << edx << " ESP : 0x"; cout.width(8); cout << esp << endl; cout.flags(old_options); cout << "-------------------------------------" << endl; }
Les lignes de compilation sont les suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 CPU 386 EXTERN afficherRegistres SECTION .data ; variable DD SECTION .text MOV EAX, 7 PUSHA CALL afficherRegistres POPA MOV EBX, 0 ; syscall argument: exit code MOV EAX, 1 ; system call number: sys_exit INT 0x80
Cependant, rien ne s'affiche =/ La fonction afficherRegistres est correctes car elle m'a été fourni par mon professeur. Il se peut que j'oublie de faire quelque chose mais là, je ne vois pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6nasm -f elf manipulation.asm g++ -m32 -c projet.cpp g++ -m32 -o projet projet.o manipulation.o ./projet
Si vous avez une petite idée, cela m'arrangerait !
Bien à vous,
Renaud.
Partager