Bonjour,

Je souhaite compiler un programme en C contenant du code assembleur mais la syntaxe avec le mot réservé _asm {} n'est pas acceptée, il faut utiliser le mot asm (); avec les "".

La syntaxe est assez complexe. J'ai jeté un oeil sur http://www.ibiblio.org/gferg/ldp/GCC...-HOWTO.html#s5 et je ne suis pas sûr du passage de paramètres...

Je compile avec Code::Blocks avec le compilateur GNU par défaut.

Voici le code en question :

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
//just saves execution contect and calls check() 
_declspec(naked) Proxy()
{
 
_asm{
 
//save execution contect and calls check() -the rest depends upon the value check() returns
// if it is 1, proceed to the actual callee. Otherwise,return STATUS_ACCESS_DENIED
pushfd
pushad
mov ebx,esp
add ebx,40
push ebx
call check
cmp eax,1
jne block
 
//proceed to the actual callee
popad
popfd
jmp RealCallee
 
//return STATUS_ACCESS_DENIED
block:popad
mov ebx, dword ptr[esp+8]
mov dword ptr[ebx],0
mov eax,0xC0000022L
popfd
ret 32
 
}
}
Y-a-t-il quelqu'un qui pourrait m'aider à traduire ce passage _asm {} en asm (); SVP ?