Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
back2root:tutoriaux:assembler-tips [2024/11/12 11:38] – frater | back2root:tutoriaux:assembler-tips [2024/11/12 14:40] (Version actuelle) – frater | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Assembler tips ====== | ====== Assembler tips ====== | ||
- | ===== remplacer mul par du bit-shift ===== | + | ===== Remplacer MUL par du bit-shift |
Quand on fait des démos, il arrive souvent que l'on doive multiplier les y par la taille d'une ligne et ensuite d'y ajouter la valeur de x. | Quand on fait des démos, il arrive souvent que l'on doive multiplier les y par la taille d'une ligne et ensuite d'y ajouter la valeur de x. | ||
Ligne 12: | Ligne 12: | ||
<code asm> | <code asm> | ||
- | ; Cycles | + | ; Cycles : 386 | 486 |
- | mov ax, | + | mov ax, |
- | mov bx, | + | mov bx, |
- | mul bx | + | mul bx |
- | add ax, | + | add ax, |
- | ; | + | ; |
</ | </ | ||
Ligne 26: | Ligne 26: | ||
on le voit, le 486 est plus optimisé pour les fonctions [[back2root: | on le voit, le 486 est plus optimisé pour les fonctions [[back2root: | ||
- | alors qu' | + | alors qu' |
+ | |||
+ | on peut donc ré-écrire le code ' | ||
+ | |||
+ | <code c> | ||
+ | int offset = (y<< | ||
+ | </ | ||
le code précédent peut donc s' | le code précédent peut donc s' | ||
<code asm> | <code asm> | ||
- | ; cycles | + | |
- | ; code ; 386 | 486 | + | mov ax, |
- | mov ax,[y] | + | mov bx,ax ; |
- | mov bx,ax | + | |
- | | + | shld ax,dx,6 ; |
- | | + | |
- | add ax,bx | + | add ax,bx ; |
- | add ax,[x] | + | add ax, |
+ | ; Total = 21 | 10 | ||
</ | </ | ||
+ | on " | ||
+ | |||
+ | si vous désirez, avoir une résolution différentes, | ||
+ | {{tablelayout? | ||
+ | ^ mul ^ bitshift | ||
+ | | 80 | (y<< | ||
+ | | 320 | (y<< | ||
+ | | 640 | (y<< | ||
<nspages back2root/ | <nspages back2root/ |