Bonjour a tous
La fonction suivante fait un décalage a droite de n bit dans mot de 64 bits
Pouvez vous m'aider a traduire cette fonction en C
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 static inline Word64 SAR64(Word64 x, int n) { unsigned int xLo = ((unsigned int *)&x)[0]; int xHi = ((int *)&x)[1]; unsigned char nb = (unsigned char)n; if (n < 32) { __asm { mov edx, xHi mov eax, xLo mov cl, nb shrd eax, edx, cl sar edx, cl } } else if (n < 64) { */ /* sar masks cl to 0x1f */ __asm { mov edx, xHi mov eax, xHi mov cl, nb sar edx, 31 sar eax, cl } } else { __asm { sar xHi, 31 mov eax, xHi mov edx, xHi } } }
Merci d'avance
Partager