Bonjour,
J'ai un petit probleme sur un petit programme:
Je compile avec:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 unsigned char inp(unsigned short port); void outp(unsigned short port, unsigned char valeur); unsigned int inpw(unsigned short port); main() { unsigned char valeur; valeur = inp(0x378); return( 0 ); } unsigned char inp(unsigned short port) { unsigned char valeur; asm { mov DX, port in AL, DX mov valeur,AL } return( valeur ); } void outp(unsigned short port, unsigned char valeur) { asm { mov DX, port mov AL, valeur out DX, AL } } unsigned int inpw(unsigned short port) { unsigned int valeur; asm { mov DX, port in AX,DX mov valeur,AX } return( valeur ); }
BCC32 -c TEST32.C
Et j'ai l'erreur:
Operand types do not match
sur la ligne:
Il traduit la fonction inpw par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part mov valeur,AX
et l'erreur se situe a la ligne:
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 _inpw proc near ?live1@240: push ebp mov ebp,esp push ecx @9: mov DX, word ptr [ebp+8] in AX,DX mov dword ptr [ebp-4],AX mov eax,dword ptr [ebp-4] @11: @10: pop ecx pop ebp ret _inpw endp
mov dword ptr [ebp-4],AX
Je precise que ce bout de code va etre utilisé ensuite dans un kernel "fait maison", donc je doit réécrire les fonctions d'entree / sortie pour gerer le materiel.
D'ou peut venir mon probleme ?
Cordialement.
Partager