J'ai écrit un programme de Sudoku en C

Celui-ci utilise intensivement les deux macros suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
// x est un unsigned dont seuls les 16 premiers bits peuvent etre a 1
#define Count_bit(x) (count_bit[x])  // nb de bits a 1 ds x 
#define First_bit(x) (first_bit[x])  // numero du premier bit a 1 ds x
Deux tableaux de 2^16=65536 unsigned char sont precalcules et me permettent d'obtenir les valeurs voulues :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
unsigned char count_bit[65536]
unsigned char first_bit[65536]
Le pb est que la consultation de ces tables est couteux en temps d'execution !
Je sais qu'il existe une instruction x86 pour l'index du premier bit a 1 : bsf ...
Mais je ne m'y connais pas assez en assembleur.

J'aurai besoin du code assembleur pour ces 2 fonctions (dans le but de le copier-coller dans mon prog (sous Visual C++ 6)) ...

Merci d'avance ...