J'ai écrit un programme de Sudoku en C
Celui-ci utilise intensivement les deux macros suivantes :
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
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
Le pb est que la consultation de ces tables est couteux en temps d'execution !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 unsigned char count_bit[65536] unsigned char first_bit[65536]
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 ...
Partager