[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

memcpy po 4 bajty

assembler

4/16/2007 12:48:00 PM

Pisze aplikacje graficzna na pewne urzadzonko w C.
Poniewaz programowo maluje duzo po ekranie, a procesor
wolny potrzebuje rysowac jak najszybciej.
Jak sprawic by kompilator zaimplementowal:

memcpy(memoryBuffer, myBuffer, sizeof(char));


nie jako:
rep stosb; //kopiuje N bajtow
a jako:
rep stosd; //kopiuje N/4 podwojntych slow


myBuffer ma oczywiscie rozmiar podzielny przez 4.
Ta druga instrukcja dziala znacznie szybciej.
--
assembler

--
Wys3ano z serwisu OnetNiusy: http://niu...
7 Answers

Any User

4/16/2007 12:58:00 PM

0

> Pisze aplikacje graficzna na pewne urzadzonko w C.
> Poniewaz programowo maluje duzo po ekranie, a procesor
> wolny potrzebuje rysowac jak najszybciej.
> Jak sprawic by kompilator zaimplementowal:
>
> memcpy(memoryBuffer, myBuffer, sizeof(char));
>
>
> nie jako:
> rep stosb; //kopiuje N bajtow
> a jako:
> rep stosd; //kopiuje N/4 podwojntych slow
>
>
> myBuffer ma oczywiscie rozmiar podzielny przez 4.
> Ta druga instrukcja dziala znacznie szybciej.

Przeszukaj sobie ró?ne implementacje [g]libc. O ile pamietam, s? tam
implementacje próbuj?ce kopiowaa po 4 bajty, je?li na danej
architekturze jest to mo?liwe i korzystne.


--
Zobacz, jak sie pracuje w Google:
http://pracownik.bl...

Jacek Czerwinski

4/16/2007 4:14:00 PM

0

Dnia Mon, 16 Apr 2007 14:57:33 +0200, Any User napisa3(a):

>> Pisze aplikacje graficzna na pewne urzadzonko w C.
>> Poniewaz programowo maluje duzo po ekranie, a procesor
>> wolny potrzebuje rysowac jak najszybciej.
>> Jak sprawic by kompilator zaimplementowal:
>>
>> memcpy(memoryBuffer, myBuffer, sizeof(char));
>>
>>
>> nie jako:
>> rep stosb; //kopiuje N bajtow
>> a jako:
>> rep stosd; //kopiuje N/4 podwojntych slow
>>
>>
>> myBuffer ma oczywiscie rozmiar podzielny przez 4.
>> Ta druga instrukcja dziala znacznie szybciej.
>
> Przeszukaj sobie ró?ne implementacje [g]libc. O ile pamietam, s? tam
> implementacje próbuj?ce kopiowaa po 4 bajty, je?li na danej
> architekturze jest to mo?liwe i korzystne.

Kiedy? widzia3em, ale funkcja na rozbiegu ocenia3a czy adres zaczyna sie
bajtu,s3owa,póls3owa, wybiera3 odnogi algorytmu itd. Musz? bya duze bloki
zeby sie op3aca3o.

Marcin 'Qrczak' Kowalczyk

4/16/2007 8:48:00 PM

0

Dnia 16-04-2007, pon o godzinie 14:48 +0200, assembler napisal(a):

> Jak sprawic by kompilator zaimplementowal:
>
> memcpy(memoryBuffer, myBuffer, sizeof(char));
>
>
> nie jako:
> rep stosb; //kopiuje N bajtow
> a jako:
> rep stosd; //kopiuje N/4 podwojntych slow

Zalezy od kompilatora.

Np. w GCC jest wieksza szansa, tak bedzie, jesli wskazniki beda typu
odpowiedniej wielkosci (funkcja memcpy jest traktowana w specjalny
sposób). Przy czym nie wiem, czy samo rzutowanie argumentów wystarczy.

--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.p...

Amelek

4/17/2007 11:17:00 AM

0

a nie mozesz poprostu wstawic wstawki w assemblerze ?

assembler

4/19/2007 8:17:00 AM

0

> a nie mozesz poprostu wstawic wstawki w assemblerze ?

Nie moge. Urzadzonko nie jest na x86 :)
A i z komplilowaniem (uzywam GNU + specyficzne srodowisko) zapewne
bylyby problemy.
--
assembler


--
Wys3ano z serwisu OnetNiusy: http://niu...

assembler

4/19/2007 8:22:00 AM

0

> Np. w GCC jest wiÄ&#65533;ksza szansa, tak bÄ&#65533;dzie, jeA&#65533;li wskaAoniki bÄ&#65533;dÄ&#65533; typu
> odpowiedniej wielkoA&#65533;ci (funkcja memcpy jest traktowana w specjalny
> sposA3b).

Dobry pomysl - nie wpadlem na to.


btw: Mialem drugi taki sam problem z funkcja memset.
Na szczescie w gaszczu bibliotecznych pikow *.h
znalazla sie funkcja memsetLongs().


> Przy czym nie wiem, czy samo rzutowanie argumentA3w wystarczy.

I'll try. Dam znac czy sie udalo.
--
assembler

--
Wys3ano z serwisu OnetNiusy: http://niu...

Sid9

7/26/2011 10:30:00 PM

0


"J Jones" <carpetempore@gmail.com> wrote in message
news:e277b2e6-bbf8-4b17-b468-ebf80ce638ab@t15g2000yql.googlegroups.com...
> On Jul 25, 10:49 pm, Vandar <vanda...@yahoo.com> wrote:
>> Sid9 wrote:
>> > Contact your Congressman and Senators at the website below.
>>
>> > Tell them the American people should decide by their vote in 2012.
>>
>> The American people decided by their vote in 2010.
>
> NO THEY DIDN'T. ONLY a small.....very small number of people were
> represented in the 2010 election. The 2010 vote does NOT represent
> ALL Americans. Get real.


Ooops! The website seems to have vanished!

Click this address:

http://www.contactingthecon...

If you get no response, try again. They are being flooded with messages.
Speaker John B?hner had to talk to Limbaugh first, you don't.

I think I saw McConnell blink and heard Limbo "blink" as he explain marginal
tax rates to one of his Dumbo callers.

Your opinion is nothing unless you make it heard.

Be sure to contact them