Bonjour a tous

La fonction suivante fait un décalage a droite de n bits dans un mot de 64 bit
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
                                      }
                          }
       
}
Pouvez m'aidez a traduire cette fonction en C

Merci d'avance