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 09 Dec 2002 11:19:42

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Transfer

Alors...Ya t'il un moyen plus rapide de passer les données d'un tableau dans un autre :

Soit, par exemple :

Code:

char value1[2][2]={1,2,3,4};
char value2[2][2];

int i,j;

for(j=0;j<2;j++)
for(i=0;i<2;i++)
value2[j][i]=value1[j][i];

Vala...c juste pour savoir


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#2 09 Dec 2002 11:21:59

dada66
Membre Communauté Graph100
Lieu: Perpignan
Date d'inscription: 09 Oct 2002
Messages: 1033

Re: Transfer

si c un prog en c/c++, tu as la méthode memcpy(void*, const void*, int nbre d'octets)
Normalement cette fonction est plus rapdide.

La fonction en asm je ne la connais pas


Flash100, F100Console, GComm, ... : http://flash100.free.fr/xoops

Hors ligne

 

#3 09 Dec 2002 13:56:57

Guest
Invité

Re: Transfer

the memcpy function is one of the fastest ways of moving data from one place to another, because it uses string functions.

memcpy( &buffer1, &buffer2, number_of_bytes) function will translate to asm code looking something like this:

Code:

mov si, offset buffer1
mov di, offset buffer2
mov cx, number_of_bytes
rep movsb

(this is assuming the arrays are in the same segment)

if the arrays are alligned you could speed the function up by using word / dword / qword moves, or on newer cpus you could use block moves  smile

 

#4 10 Dec 2002 08:21:45

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

Re: Transfer

ben voila
la methode asm est la plus rapide
bithwise a oublié de préciser que la source doit être a es:[di] et non pas tt les deux a es:[si/di]
voila

Hors ligne

 

#5 10 Dec 2002 08:51:06

Guest
Invité

Re: Transfer

yes, ofcourse  wink
maybe it was a bit of a hasty comment I posted there  smile

what I ment by assuming they were in the same segment:
when loading the offsets, they are relative to the data segment declared in your program. To copy something from a runtime defined segment, you will have to load 'si' with the offset relative to 'ds', and 'di' with the offset relative to 'es'

btw: does it bother anyone that I post here in English. I've had some years of French in school, which gives me the foundation to understand parts of what's beeing said here, but I'm not good enough to reply in French

 

#6 10 Dec 2002 15:21:32

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: Transfer

ok but beware of the _DS segment (in asm in C (TC3)) it cause to me many 'ununderstoodable' bugs....


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#7 10 Dec 2002 19:43:28

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

Re: Transfer

Well In my memory_zone library I have designed powerfull move functions which run the fatest way possible (word/word using rep prefix), and you can move more than 65535 bytes...

To KTr: when you modifie DS you have to push it before and make sure to restore its value before using any extern C variable (and before returning control to your C function) else it will crash...


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

Hors ligne

 

#8 11 Dec 2002 02:24:07

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: Transfer

arg !!! arg !!! arg !!!
Parlez en francais, je comprends rien du tout ...
( ou alors faites une double traduction)...
M'enfin merci qd meme pour la fonction big_smile


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#9 11 Dec 2002 05:31:27

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

Re: Transfer

more than 65535Ko...

is'nt it more than 65536 o ???
c po plus de 65536 o???


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#10 11 Dec 2002 15:12:54

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: Transfer

To KTr: when you modifie DS you have to push it before and make sure to restore its value before using any extern C variable (and before returning control to your C function) else it will crash...

I believe you're right but when I programmed this i was a newbie (like today....)!


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#11 12 Dec 2002 06:11:23

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

Re: Transfer

more than 65535Ko...

is'nt it more than 65536 o ???
c po plus de 65536 o???

Ya ya you're right it's 65535 bytes of course we don't have 65 Mo on the AFX lol


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

Hors ligne

 

#12 12 Dec 2002 07:23:30

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

Re: Transfer

no,no !
its 65536 B!
its number of byte !


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

Pied de page des forums

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