Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#1 04 Jul 2002 04:26:35

Guest
Invité

Copie d'un tableau vers un autre en C

Code:

unsigned char scr[64][63];
unsigned char scr2[64][63];

comment je fais pour copier tout le contenu de scr2 dans scr? 8O
Sans passer par une boucle for si possible, parce que ca:

Code:

for(i=0;i<=64;i++)
for(j=0;j<=63;j++)
scr[i][j]=scr2[i][j];

C'est VRAIMENT TROP LENT. sad

 

#2 04 Jul 2002 08:29:08

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: Copie d'un tableau vers un autre en C

Y'a une fonction qui doit s'appeller memcpy (cherche dans l'aide de TC) qui doit faire ça mais je sais pas si ça ira vraiment plus vite.


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#3 04 Jul 2002 13:29:38

L@rk
Programmeur Graph100
Lieu: Saumur (49)
Date d'inscription: 30 Jan 2002
Messages: 742
Site web

Re: Copie d'un tableau vers un autre en C

J'insisterait jusqu'a la mort:
Rien ne vaut l'ASM pour ce genre de truc !!
lol
:-)


L@rk @ FGPstudios

Hors ligne

 

#4 04 Jul 2002 15:04:13

C@siomax
Programmeur Graph100
Lieu: Grenoble, au QG de fmw-product
Date d'inscription: 03 Feb 2002
Messages: 3042
Site web

Re: Copie d'un tableau vers un autre en C

facile à dire! tu t'y prends comment?
(je sens que je vais d/l des cours d'asm)


:mrd: :mrd:
.·´¯`·.¸.-> Casiomax <-·´¯`·.¸.·

Statut: indéfini

Hors ligne

 

#5 05 Jul 2002 03:13:39

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: Copie d'un tableau vers un autre en C

A moi aussi ce serai utile .


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#6 05 Jul 2002 04:18:07

L@rk
Programmeur Graph100
Lieu: Saumur (49)
Date d'inscription: 30 Jan 2002
Messages: 742
Site web

Re: Copie d'un tableau vers un autre en C

Ben je vais pas t'expliquer en détail, mis tu garde ton imbrication de boucles en C (pske les instructions de saut en ASM inline ca merde) mais tu remplace les instructions de copie des éléments opar de l'ASM. Je vais pas te faire un cours: il faut que tu apprenne l'ASM et tu y arriveras tout seul.
Mais à la limite je pourrais faire pê un tutor sur ca: non seulement ca en aidera bcp mais en + ca remplira la nouvelle vers. de mon site (qui va bientot sortir) lol!


L@rk @ FGPstudios

Hors ligne

 

#7 05 Jul 2002 14:35:32

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: Copie d'un tableau vers un autre en C

à mon avis mieux vaut laisser le compilateur faire l'asm, tu feras pas mieux que lui pour ce genre de chose.


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#8 05 Jul 2002 15:01:52

C@siomax
Programmeur Graph100
Lieu: Grenoble, au QG de fmw-product
Date d'inscription: 03 Feb 2002
Messages: 3042
Site web

Re: Copie d'un tableau vers un autre en C

Il faut avouer j'ai du mal à comprendre le code asm généré par TC...


:mrd: :mrd:
.·´¯`·.¸.-> Casiomax <-·´¯`·.¸.·

Statut: indéfini

Hors ligne

 

#9 06 Jul 2002 04:49:17

L@rk
Programmeur Graph100
Lieu: Saumur (49)
Date d'inscription: 30 Jan 2002
Messages: 742
Site web

Re: Copie d'un tableau vers un autre en C

@ 2072 : pour les copies de tableaux à tableuax, tu px utiliser REP (en asm) ca ira bien + vite que tt ce que peut merder le compilateur !


L@rk @ FGPstudios

Hors ligne

 

#10 06 Jul 2002 19:34:22

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: Copie d'un tableau vers un autre en C

Oui mais un compilateur DOIT faire de l'asm avant de faire du binaire, l'asm est ensuite assemblé par un assembleur. En principe un compilateur connaît tous les recoins du langage asm, le code qu'il produit est très optimisé, il est souvent très difficile de faire mieux (cf les test graphics dans TOUCHE: fait les tests "Fill p/p wth C" et "Fill p/p wth ASM", tu verras que les temps sont indentiques). Donc ça m'étonnerait que TC n'utilise pas la command REP.

Mais pour le problème de Niff c'est ça double boucle qui fait perdre du temps:

Code:

for(i=0;i<=64;i++) 
for(j=0;j<=63;j++) 
scr[i][j]=scr2[i][j]; 

peut être remplacé en utilisant la fonction:

Code:

void *memcpy (void *dest, const void *src, size_t n);

Voilà ce que ça devient:

Code:

memcpy((void *)scr2, (void *)scr1, 63*64);

Je pence que ça ça devrait aller très vite.

@+


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#11 07 Jul 2002 07:09:49

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: Copie d'un tableau vers un autre en C

En effet TC produit de l'asm mais de l'asm pas optimisé come on pourait le faire, en effet si tu fait Pltinum en C, je peut t'assurer que ce jeu seraui 3 ou 4 fois plus lent qu'en pur asm et pourtant c nous qu'avons fait le jeu, je soutiens que si tu fait une belle boucle en Asm , elle ira plus vite qu'une boucle en C, et m^me plus que memcpy
J'ai fait un prog en asm pour le port com qui serait tout simplement infaisable en C vu qu'il utilise les interruptione et l'acces direct a la mem, et si je l'avais fait, il serais 10 fois plus lent, voila !!

Hors ligne

 

#12 07 Jul 2002 10:04:47

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: Copie d'un tableau vers un autre en C

Ça m'étonnerait beaucoup, memcpy a quand même était faite pour ça, elle doit être optimisée à fond. Et je n'ai pas dit que l'asm ne donnait pas de meilleur résultats dans certains cas. Mais pour copier un tableau faut quand même pas exagérer...


Et pour platinium je sais pas, la rapidité en programmation c'est surtout une question d'organisation et pas de choix de langage.


Et n'oubli pas que le C n'est qu'une "interprétation" du langage ASM, le compilateur fait ce que tu lui dit de faire, il ne va pas changer ton code pour l'optimiser, peut-être que lorsque tu programmes en ASM tu pense beaucoup plus à l'optimisation que lorsque tu programmes en C, d'où cette impression que l'asm est 4 fois plus rapide que le C.

L'asm pour nous est seulement intéressant pour les fonctions graphiques puisque TC ne connaît pas le V30 il ne connaît pas non plus les instructions qui agissent sur les bits.


Mais bon tout ça dépends du compilateur.


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#13 09 Jul 2002 16:45:09

mastermage
Magicien G100
Lieu: Charleville-Mézières,Compiègne
Date d'inscription: 31 Jan 2002
Messages: 1008

Re: Copie d'un tableau vers un autre en C

ca devrait etre plus rapide qu'un memcpy (sinon aussi rapide), mais ne le mettez pas dans un fonction ca ralentirait...
(ben oui un appel de fonction c'est 1 instruction + 1 ou 2 instructions par parametre)

attention ne mettre qu'un "rep movs*"

Code:

 asm{
mov ax,ds
mov es,ax ;segment de destination = segment de source sur la Graph100
mov si,scr2 ;source
mov di,scr ;destination
mov cx,63*64 ;remplacer 63*64 par le bon nombre (compteur)
cld ;copier dans la bonne direction
rep movsb ;si c'est un tableau de char (1 octet/element)
rep movsw ;si c'est un tableau de int (2 octets/element)
}

Hors ligne

 

#14 10 Jul 2002 04:57:12

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: Copie d'un tableau vers un autre en C

Vive Mastermage le grand sauveur !!
En effet 2072, desolé de te decdvoie mais c en efet bioen plus rapide en asm car en c c'est un suêrposition de routine preprogrammées et des fois ça prends de la place

Hors ligne

 

#15 10 Jul 2002 07:03:18

Guest
Invité

Re: Copie d'un tableau vers un autre en C

Merci Gandalf...

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr