Bonjour,
j'essaye de passer des commandes assembleur dans une fonction en C mais j'ai erreur de compilation sur une fonction :

Code C : 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
static __inline uint64_t bswap64 ( const uint64_t value )
{
#ifndef FREEAGE_NO_ASM
	uint64_t _value;
	__asm {
		lea	esi, value
		mov eax, [esi]
		mov ebx, [esi+4]
		bswap eax
		bswap ebx
		lea edi, _value
		mov [edi], ebx
		mov [edi+4], eax
	}
	return _value;
#else
	uint32_t hi = (uint32_t)(value >> 32);
	uint32_t lo = (uint32_t)(value & 0xFFFFFFFF);
	return (uint64_t)bswap32(hi) | (uint64_t)(bswap32(lo) << 32);
#endif
}
sur toutes les lignes ou il y a 'mov' :

error C2400: inline assembler syntax error in 'opcode'; found 'Unexpected token 18 '
error C2400: inline assembler syntax error in 'opcode'; found 'Unexpected token 21 '
Quelqu'un qui connaît mieux l'Assembleur que moi a-t-il une solution ?

Merci d'avance.

Ps : cette fonction etais deja ecrite et fonctionnais nickel lors de l'inclusion des fichiers issues du SDK Windows.

#include <winsock2.h>
#include <Ws2tcpip.h>
#include <windows.h>

J'ai juste réutilisé la meme fonction en incluant le fichier #include <winsockx.h> du SDK Xbox 360.