CPC Rulez https://cpcrulez.fr/forum/ |
|
timing sur LDI https://cpcrulez.fr/forum/viewtopic.php?f=4&t=4244 |
Page 1 sur 2 |
Auteur : | neocps1 [ 25 Juin 2010, 10:28 ] |
Sujet du message : | timing sur LDI |
Bonjour, Qu'est ce qui est le plus rapide entre : LDI et ld a,(hl) ld (de),a inc hl inc de En sachant que (comme le code l'indique), je n'ai pas besoin de décrémenter BC. merci ! |
Auteur : | fano [ 25 Juin 2010, 11:13 ] |
Sujet du message : | Re: timing sur LDI |
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 ) |
Auteur : | neocps1 [ 25 Juin 2010, 11:21 ] |
Sujet du message : | Re: timing sur LDI |
merci |
Auteur : | AsT [ 25 Juin 2010, 11:25 ] |
Sujet du message : | Re: timing sur LDI |
Tout ce que tu veux savoir sur les timings est la : http://quasar.cpcscene.com/doku.php?id=iassem:timings 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) Là est toute la différence |
Auteur : | neocps1 [ 25 Juin 2010, 11:31 ] |
Sujet du message : | Re: timing sur LDI |
comment optimiserais tu ce bout de code ? ld a,(de) ld (hl),a inc hl inc de ld a,(de) ld (hl),a inc de add hl,bc |
Auteur : | BDCIron [ 25 Juin 2010, 12:04 ] |
Sujet du message : | Re: timing sur LDI |
Déjà es tu certain d'avoir besoin de faire un inc hl ou un inc de ??? Par exemple s'il s'agit de courbes a lire, places les avec un poids faible a 0. si ta courbe boucle sur 256 valeurs alors un inc l suffit... |
Auteur : | neocps1 [ 25 Juin 2010, 12:12 ] |
Sujet du message : | Re: timing sur LDI |
j'y ai pensé, mais oui, HL est une adresse video et DE pointe vers un endroit en mémoire (n'importe où) |
Auteur : | hERMOL [ 25 Juin 2010, 12:44 ] |
Sujet du message : | Re: timing sur LDI |
des routines d'affichage de sprites y'en a des tas .. par exemple sur un sprite 8x8 : Code : ; de=mem ecran ; hl=sprites source (8x8 pixels ou 8x2 octets) 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 PS: je te conseil également d'aller lire les articles A100% de Poom --> https://cpcrulez.fr/coding_menu-arcade.htm ou l'article de PICT/LOGON SYSTEM ----> https://cpcrulez.fr/coding_logon47.htm |
Auteur : | neocps1 [ 25 Juin 2010, 12:45 ] |
Sujet du message : | Re: timing sur LDI |
hERMOL a écrit : des routines d'affichage de sprites y'en a des tas .. désolé, j'apprends sur le tas... |
Auteur : | hERMOL [ 25 Juin 2010, 12:57 ] |
Sujet du message : | Re: timing sur LDI |
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 |
Auteur : | AsT [ 25 Juin 2010, 18:52 ] |
Sujet du message : | Re: timing sur LDI |
C'est exactement ça sauf que tu as oublié de preciser qu'il faut sauvegarder la Pile au depart de la routine et la restaurer à la fin De plus, si tu veux que ton gfx s'affiche en #c000 et que ton gfx fait 8 octets de large, tu commences à l'adresse #c000+8. Il ne faut pas oublier que 1 Push= 2 Dec SP... |
Auteur : | neocps1 [ 25 Juin 2010, 22:25 ] |
Sujet du message : | Re: timing sur LDI |
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 |
Auteur : | hERMOL [ 25 Juin 2010, 22:34 ] |
Sujet du message : | Re: timing sur LDI |
un petit ei ret en #38 doit faire l'affaire ... |
Auteur : | norecess [ 26 Juin 2010, 01:43 ] |
Sujet du message : | Re: timing sur LDI |
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 ! |
Auteur : | AsT [ 26 Juin 2010, 07:56 ] |
Sujet du message : | Re: timing sur LDI |
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 Allez zou... Je pars au Taf ! |
Page 1 sur 2 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |