Inscription : 15 Août 2008, 13:00 Message(s) : 968 Localisation : Troyes, France
Salut , c'est LDI car elle fait 5 nops , chaque LD (reg),reg fait 2 nops et l'incrémentation de HL/DE fait 2 par instructions (1 sur un registre 8 bits) , donc ça te fait 8 nops.Tu peux trouver des tableaux (incomplets) sur le Grimware (ou ici je crois aussi) ou utiliser Winape et son compteur de nops pour mesurer la vitesse de ton code (je rêve d'un profiler )
_________________ "NOP" tel est le programme parfait ! court, rapide, lisible et sans bugs (connus)
En effet, Ldi sera plus rapide, mais il y a plus rapide encore, l'instruction Push... Un Ldi récupère les données une à une alors qu'une instruction Push les récupère deux à deux...
Un Ldi -> 5 Nops (une valeur 8 bits) Un Push (hl, de ou bc) -> 4 Nops (une valeurs 16 bits)
ldi ldi dec de dec e add #08 ld d,a ldi ldi dec de dec e add #08 ld d,a ldi ldi dec de dec e add #08 ld d,a ldi ldi dec de dec e add #08 ld d,a ldi ldi dec de dec e add #08 ld d,a ldi ldi dec de dec e add #08 ld d,a ldi ldi dec de dec e add #08 ld d,a ldi ldi
Inscription : 20 Août 2007, 18:21 Message(s) : 4992
y'a pas de soucis, on est la pour en discuter justement
voilà une 2eme routine qui illustre la technique d'AST
Code :
; affiche sur &40 octets (ou &20 words) par la pile
; sp=spr source (&????) ; hl=mem ecran (&???0)
pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l pop de ld (hl),e inc l ld (hl),d inc l ; boucle sur la prochaine ligne
Inscription : 28 Mai 2010, 11:34 Message(s) : 99 Localisation : Eteauville, France
j'ai testé une routine qui utilise la pile pour faire des chargements sur 16 bit (pop de), mais elle semble perturbée par les interruptions, même en les désactivant
Perso, je base la plupart de mes effets sur l'utilisation de la pile. Rapide... ultra rapide ! La Phat 2 concernant l'affichage fullscreen, tout est avec la pile, je vois pas comment j'aurais pu gérer l'affichage de si grosses images autrement !
Le EI:RET en #38 ne sert à rien dans l'exemple cité ci dessus...
Je verrais plutôt un truc du style :
Code :
DI ld (savepile+1),sp ld sp,data+2 ld hl,#c000 pop de ld (hl),e inc l ld (hl),d ..................etc.... savepile ld sp,#caca ei ret data defb #ff,#aa
Tu vois, pas besoin de ei ret !
Tu pourrais faire aussi un truc du style :
Code :
di ld (savepile+1),sp ld sp,#c000+8 ld hl,#ffaa push hl ld hl,#eebb push hl .... etc... savepile ld sp,#bebe ei ret
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 71 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum