1

-

2

c'est largement optimisablesmile

3

-

4

bah c simple, tu prend ton bloc dans la 3eme boucle, et tu le copie colle 30*30*30 fois, comme ca apres t'as pls aucune boucle tritoptriroll

hem... dsl grintrisors
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

5

-

6

Bah tu ne peux pas faire mieux en optimisation en taille. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

7

JackosKing > Tu vois encore un peu et ton post aurait pu être utile.

Orion_ > Essaye ça :

objdata2 = objdata1;

for(k = 0; k < 30; k += 5)
 {
 for(j = 0; j < 30; j += 5)
  {
  for(i = 0; i < 30; i += 5)
   {
   objdata2->x = i - 15;
   objdata2->y = j - 15;
   objdata2->z = k - 15;
   objdata2++;
   }
  }
 }


Je pense que tu devrais gagner un petit peu.

[edit] Ça me fait gagner environ 20 octets sur le test que j'ai fait.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

bein il voulait savoir si ct optimisable je lui ai repondu tongue
puis:
for(i = 0; i < 30; i += 5)
objdata2->x = i - 15;
c'est pas vraiment top...

9

et avec des while? cheeky

genre:


objdata2 = objdata1 + 6 * 6 * 6;

k = 30;
while ((k -= 5))
 {
 j = 30;
 while ((j -= 5))
  {
  i = 30;
  while ((i -= 5))
   {
   objdata2->x = i - 15;
   objdata2->y = j - 15;
   objdata2->z = k - 15;
   objdata2--;
   }
  }
 }


trifus
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

10

-

11

JackosKing > Si t'as qqchose à proposer, pourquoi tu le met pas directement ? Et si t'as rien, pourquoi tu poste ?

sBibi > GCC ne fait pas ça tout seul ? (au fait faudrait déplacer le objdata2--; avant les affectations du coup) [edit] cf IRC -> ok smile

Orion_ > A la fin des boucles nvertex a toujours la même valeur, pas besoin de l'incrémenter pour la connaitre smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Vertyos> aucune idee grin
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

13

c surment parce que je suis fatigué...:
nvertex1=0;
{
register short k,j,i;
for(k=-15;k<15;k+=5)
for(j=-15;j<15;j+=5)
for(i=-15;i<15;i+=5)
{
objdata1[nvertex1 ].x=i;
objdata1[nvertex1 ].y=j;
objdata1[nvertex1++].z=k;
checkloadbar();
}
}
je comprend pas l'interet de l'offset constant -15...

14

pas sur que ca fasse gagner bcp en taille ca.. ms bon neutral
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

15

bein 3 sub

16

Tu peux essayer:
  for(k=0;k<30;k+=5)
  {
    for(j=0;j<30;j+=5)
    {
      for(i=0;i<30;i+=5)
      {
        toto *objdata=objdata1+(nvertex1++);
        objdata->x=i-15;
        objdata->y=j-15;
        objdata->z=k-15;
        checkloadbar();
      }
    }
  }

ou:
  for(k=0;k<30;k+=5)
  {
    for(j=0;j<30;j+=5)
    {
      for(i=0;i<30;i+=5)
      {
        objdata1->x=i-15;
        objdata1->y=j-15;
        (objdata1++)->z=k-15;
        nvertex1++;
        checkloadbar();
      }
    }
  }

Mais je ne sais pas si c'est un gain. Il vaut mieux travailler en assembleur pour optimiser au maximum.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

-

18

subi + dbra beurk

19

-

20

Il y a des jours où je me demande s'il ne faudrait pas créer un mot-clé asm_or_c qui donne les deux variantes, asm et C de la même fonction. Après, ce serait au compilo de décider si la fonction C ou asm est la plus efficace grin Evidemment le pb serait qu'une nouvelle version du compilo risquerait d'apporter des incompatibilités, parce que le code C n'était pas testé depuis longtemps et le compilo se met à utiliser le code C au lieu du code asm.

Bon je dis pas ça pour critiquer le code d'Orion, hein, la version actuelle de GTC génère un code un peu moins efficace que ça, mais un compilo futur pourrait générer du code meilleur smile

Sinon, dans ma todo list, je pourrrais rajouter un convertisseur asm -> code intermédiaire pour que le compilo optimise l'asm qd c'est possible (on pourrait faire plein de trucs avec, du genre recompiler la ROM cheeky).

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

21

Pkoi je fais tjs des posts croisés? cry

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

22

	movea.l	objdata1(pc),a4	; (pas de lea, objdata1 contient un pointeur)
	moveq	#0,d4		; nvertex1
	moveq	#29,d5		; k
	moveq.l	#29-15,d2
Next1k:
	moveq	#29,d6		; j
	moveq.l	#29-15,d1
Next1j:
	moveq	#29,d7		; i
	moveq.l	#29-15,d0
Next1i:
	subq.w	#1,d0		; i-15
	subq.w	#1,d1		; j-15
	subq.w	#1,d2		; k-15
	move.w	d0,(a4)+	; objdata1[nvertex].x=i-15
	move.w	d1,(a4)+	; objdata1[nvertex].y=j-15
	move.w	d2,(a4)+	; objdata1[nvertex].z=k-15
	addq.w	#1,d4		; nvertex++
	bsr	checkloadbar
	dbra	d7,Next1i
	dbra	d6,Next1j
	dbra	d5,Next1k
Ça devrait prendre 6 octets en moins je crois.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

23

-

24

Mais ça ne correspond pas à ton code C, je crois, puisqu'il me semble que tu ne fais que 6 itérations en C, pas 30, non ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

25

-

26

-

27

En effet.
Bon, j'attends l'optimisation de Pollux, il arrive toujours à faire des trucs impressionnants smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

28

Non, comme je l'ai dit la version actuelle de GTC génère du code moins bon que ton asm de départ. Je parlais de versions futures smile (en fait ce genre de choses est très courant, je ne compte pas le nombre de progs asm très mal écrits [code moins bon que celui généré par un compilo] - et ma remarque ne visait pas ton code en particulier, qui est presque optimal)
Sinon pour une démo de 4 ko tu peux aussi essayer de compresser et de faire un auto-extractible grin Je ne sais pas si le taux de compression sera fantastique vu la faible taille, mais ça éviterait des malloc et ça t'éviterait des drawline et ce genre de choses pour tes logos (bon vieux memcpy grin), peut-être jusqu'à compenser le ko pris par le décompresseur.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

29

-

30

Et sinon il sert à quoi le nvertex?

(et, entre autres bénéfices de l'optimisation par le compilo, ce genre de choses qui est activé en mode "debug" est automatiquement désactivé en mode "normal" puisque le compilo peut déterminer si nvertex est utilisé après ou pas)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)