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 :
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;
}
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
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
Les lignes de compilation sont les suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
nasm -f elf manipulation.asm
g++ -m32 -c projet.cpp
g++ -m32 -o projet projet.o manipulation.o
 
./projet
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.

Si vous avez une petite idée, cela m'arrangerait !

Bien à vous,
Renaud.