for-schleife mit memcpy / memset ersetzen
-
Hans Im Glück schrieb:
temp16 ist vom Typ unsigned short; ein möglicher Wert für temp16 ist z.B. 0xF100
dann probier doch mal ein array aus 76800 hintereinanderliegenden 0xf100 oder, wenn du einen 32-bit prozessor hast, aus 38400 mal 0xf100f100, mit memcpy rüberzuschaufeln. das könnte vielleicht schneller sein.
-
+fricky schrieb:
das könnte vielleicht schneller sein.
vielleicht - wenn temp16 eine konstante ist. der name lässt aber nicht unbedingt darauf schließen.
-
unsigned int BUF=(unsigned int *)(0x20000000); unsigned int temp32=((unsigned int)temp16<<16)|temp16; for (i = 0; i < (320 * 240 / 4); ++i ){ BUF[i] = temp32; }
-
volkard schrieb:
(320 * 240 / 4)
wohl eher
(320 * 240 / 2)
-
+fricky schrieb:
volkard schrieb:
(320 * 240 / 4)
wohl eher
(320 * 240 / 2)
ach ne, doch nicht.
-
+fricky schrieb:
+fricky schrieb:
volkard schrieb:
(320 * 240 / 4)
wohl eher
(320 * 240 / 2)
ach ne, doch nicht.
doch.
-
+fricky schrieb:
+fricky schrieb:
+fricky schrieb:
volkard schrieb:
(320 * 240 / 4)
wohl eher
(320 * 240 / 2)
ach ne, doch nicht.
doch.
nö, doch nicht. sorry.
-
#define BUF(x) *(unsigned short *)(0x20000000 + x )
wie stellt man denn sicher, das es ein array an der adresse 0x20000000 gibt?
was mir noch auffällt, das sich der temp16 wert innerhalb der for-schleife scheinbar nicht ändert. da wäre memset der richtige kandidat, indem man temp16 nach unsigned int verdoppelt.
-
I schrieb:
#define BUF(x) *(unsigned short *)(0x20000000 + x )
wie stellt man denn sicher, das es ein array an der adresse 0x20000000 gibt?
macht die hardware, da ist der bildschirmspeicher eingebaut.
I schrieb:
was mir noch auffällt, das sich der temp16 wert innerhalb der for-schleife scheinbar nicht ändert. da wäre memset der richtige kandidat, indem man temp16 nach unsigned int verdoppelt.
memset kann ein int-array mit einem sich wiederholenden int füllen, dessen vier bytes nicht alle gleich sind? komisch. nee.
-
stimmt geht nicht, shit. memset hackt das int argument auf ein byte ab.