MaeelLe 04/07/2012 à 03:52
Oui c'est clairement ton code C qu'il faut revoir avant de passer en ASM.
C'est difficilement comprehensible.
Je n'ai pas regarde en details, pas facile de voir ce qui est faisable sans comprendre ce que tu souhaites faire, mais tu peux peut etre :
* sortir ton if (level==1) de la derniere boucle
* supprimer if (tile_x == 2+lecx) et l'incorporer dans la boucle lecx directement
* fusionner grpx et lecx.
* Te separer des multiplications, les * 7, *24, %29 en particulier (changement de l'algo, tableau pre-calcule, increment (comptey+=24), ...), c'est tres couteux sur la lynx
* Derouler ta boucle comptey
* Utiliser le type le plus petit possible pour tes donnees et variable et unsigned si possible, i.e. tes trucs de 0 a 6 ou 0 a 7 n'ont pas besoin d'etre int.
* Ne pas refaire les meme calculs 50 fois, i.e. ton grpx * 8, comptex * 24, &SCB[tlnb][ 0]
* Avoir des tableaux de taille en ^ 2.([comptex][comptey] a besoin d'etre calcule donc avec des tailles en ^2 les shifts sont utilisables)
Tu n'as que l'embarra du choix, pas necessairement utile de la passer en ASM maintenant.