|
Page : 1 2 Page Précédente | |
Auteur | Sujet : Comment inverser les bits d'un octet ? |
Publicité | Posté le 02-09-2004 à 16:53:56 |
AthlonSoldier Feel the power | Ah oué voila c'est tres long Message édité par AthlonSoldier le 02-09-2004 à 17:16:39 |
jesus_christ votre nouveau dieu |
de rien
|
Kristoph | Si c'est juste les bits d'un octet, je suggère soit la table de lookup à 256 entrées, soit une table à 16 entrées mais on fait 2 lookup dedans, une fois pour les 4 bits de poids faible et une fois pour ceux de poids fort |
AthlonSoldier Feel the power | C'est à dire ? |
Kristoph |
Message édité par Kristoph le 02-09-2004 à 17:54:36 |
AthlonSoldier Feel the power | Je pense que c'est tres lent ca, vu qu'il y a acces mémoire |
Kristoph | Une fois le tableau en cache ce qui n'est vraiment pas difficile pour un tableau de 256 octets, c'est certainement beaucoup plus rapide que la boucle vue ci dessus. Le seul point litigieux serait pour le cas ou le resultat obtenu influe sur la prediction de branchement dans les quelques instructions suivantes. |
jesus_christ votre nouveau dieu | ouais l'option de kris semble la meilleure, 256 octets ça rentre dans le L1. T'aura un AGI stall à chaque accès mais ça doit être + rapide qu'une boucle qui tourne 8 fois. |
Publicité | Posté le 02-09-2004 à 19:31:29 |
prorel |
Message édité par prorel le 03-09-2004 à 00:23:10 |
AthlonSoldier Feel the power |
|
jesus_christ votre nouveau dieu |
bien vu !!! ça shift et ajoute le bit de poids faible en une instruction
vu que la première rotation ne sert à sortir le bit de poids fort, shift est suffisant et + rapide que la rotation sur la plupart des cpu (tous ?). |
prorel | exact, rcr ne prend qu'1 cycle (a partir du p1), alors que shl en prend 3
|
jesus_christ votre nouveau dieu |
euh c'est pas le contraire ? |
prorel | nan d'apres le bouquin, c'est bien "rcr reg,1" qui prend 1 cycle |
jesus_christ votre nouveau dieu | j'ai vérifié dans mon bouquin (JB Emond) et les deux opérations
prennent toutes les 2 un seul cycle.
|
prorel | pour quel proc??
|
christophe_d13 L'efficacité à tout prix. | Je viens de me creuser la cervelle... ça m'arrive
Message édité par christophe_d13 le 03-09-2004 à 20:27:36 |
prorel | hum
|
christophe_d13 L'efficacité à tout prix. | Petit code vite fait pour illustrer avec l'explication...
|
christophe_d13 L'efficacité à tout prix. | Résultat sur un Barton :
|
Mr Mala | je n'ai qu'une chose à dire : |
prorel |
|
deumilcat | je débarque peut etre avec mes vieux souvenirs d assembleur zx80 mais.. un XOR ca existe pas sur ASMx86?
Message édité par deumilcat le 03-09-2004 à 23:40:09 |
prorel |
|
deumilcat |
Message édité par deumilcat le 03-09-2004 à 23:40:24 |
prorel |
|
AthlonSoldier Feel the power |
|
christophe_d13 L'efficacité à tout prix. | Résultat de la comparaison :
25 cycles !
24 cycles !
10 cycles !
3 cycles !
Message édité par christophe_d13 le 04-09-2004 à 00:07:26 |
prorel | dans le cas 2 tu n'a pas besoin du "adc ah,0"
|
christophe_d13 L'efficacité à tout prix. | prorel> Tout dépend de l'usage. Dans le cas où la routine est appelé assez rarement, ou bien que juste avant le cache est altéré, il faudra choisir la meilleure routine.
Message édité par christophe_d13 le 04-09-2004 à 00:17:08 |
prorel | on peut faire un compromis
|
christophe_d13 L'efficacité à tout prix. | prorel> Oui, mais si pour les appels suivants la table n'est pas dans L1 ? On passe à 20 cycles !
Message édité par christophe_d13 le 04-09-2004 à 00:34:01 |
prorel | vi, c'est clair |
christophe_d13 L'efficacité à tout prix. | Il n'y a jamais de meilleures méthodes, juste des compromis.
Message édité par christophe_d13 le 04-09-2004 à 00:35:05 |
prorel |
AthlonSoldier Feel the power | C'est gentil d'essayer de faire le code le plus optimisé pour ma simple question |
jesus_christ votre nouveau dieu | je voudrais pas chipoter mais un rotate 4 sur al dans la méthode de chris (jolie d'ailleurs ) au lieu de la 1ere étape ça serait pas + rapide ?
Message édité par jesus_christ le 04-09-2004 à 21:51:51 |
christophe_d13 L'efficacité à tout prix. | Bien vu mais bon c'est un premier jet, je n'ai pas cherché à faire le plus rapide. Juste expliquer en ASM ma méthode.
Message édité par christophe_d13 le 05-09-2004 à 09:43:06 |
Publicité | Posté le |
Page : 1 2 Page Précédente |
Sujets relatifs | |
---|---|
Lire la valeur de la couleur d'un pixel en 800*600 en 32 bits ? | conversion en bits |
conversion des décimaux en bits | [RESOLU]Convertir un entier en HEXA sur un nombre de bits |
[PHP] Conversion fichier .tif en .png 24 bits | programmation 32 bits |
Inverser l'axe Y de Graphics | [debutant] 1 ko = 1000 ou 1024 octet ? |
[Visual c++] convertir une taille en Octet automatiquement 2 | [Visual c++] convertir une taille en Octet automatiquement |
Plus de sujets relatifs à : Comment inverser les bits d'un octet ? |