Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Principal";
Archivo actual: 2002.01.10;
Descargar: [xml.tar.bz2];

abajo

MemoryManager y MMX Encontrar ramas similares


Lis   (2001-12-20 14:51) [0]

¿Cómo hacer que MemoryManager alinee bloques de memoria en bits 8?



Владислав   (2001-12-20 15:08) [1]

Use VirtualAlloc de la API.



Lis   (2001-12-20 18:56) [2]

Gracias, pero pregunté por otra cosa. Me gustaría obligar al gerente a lidiar con la alineación, por ejemplo, para usar matrices dinámicas.



Владислав   (2001-12-21 06:48) [3]

Cual es la diferencia VirtualAlloc se alinea tanto como 64 kB.



MBo   (2001-12-21 06:59) [4]

¿Y para qué es necesario?
tal vez algo primitivo hará
como el uso de una matriz de registros de tamaño, un múltiplo de bytes 8 o incluso
matriz de doble
y moldes



Владислав   (2001-12-21 09:12) [5]

> MBo © (21.12.01 06: 59)

...использования массива записей размера, кратного 8 байт или даже array of double...

¿Esto realmente ayuda a alinearse?



Green   (2001-12-21 11:33) [6]

Es interesante, pero ¿qué impide el uso de matrices dinámicas de cantidades de un solo byte si cada elemento no está alineado con el límite de la palabra (palabra doble, etc.) ????



Lis   (2001-12-21 14:06) [7]

Esto es necesario para que los comandos MMX funcionen más rápido (para mí, en una transformación rápida de Fourier sin alineación, se pierde 30%). Ahora tomo la memoria de GetMem y ajusto el puntero con los rotuladores. Me gustaría deshacerme de esta curvatura.



Lis   (2001-12-21 16:05) [8]

Explico mi decisión:

función GetQuadMem (var Mem: puntero; tamaño: entero): puntero;
comenzar
GetMem (Mem, Tamaño + 4);
if (Cardinal (Mem) y 4) = 0 entonces
Resultado: = Mem
más
Resultado: = Puntero (Cardenal (Mem) + 4);
fin;

qP: = GetQuadMem (mP, 8 * N);
// trabajar con qP
FreeMem (mP);

Las desventajas de esta solución:
1 Para cada variable, debe almacenar un puntero 2;
2 Las matrices dinámicas no están alineadas.

Un intento de reemplazar el MemoryManager de una manera similar falló para mí, por lo tanto, 2 tiene preguntas más específicas:
1 ¿MemoryManager es uno para todo el programa o cada subproceso tiene el suyo?
2 ¿Cuál es el formato del encabezado del bloque de memoria?



Digitman   (2001-12-21 16:59) [9]

El MemoryManager, que Borland implementa de manera predeterminada, asigna bloques de memoria alineados a un límite de doble palabra (DWORD). Las matrices dinámicas usan el mismo administrador de memoria, lo que significa que también están alineadas con el mismo límite. Entonces no hay necesidad de inventar nada.
Lo único que arroja dudas es el prefijo Quad en su código. Probablemente todavía necesite alineación no en el borde DWORD, sino en el borde QWORD. Entonces, por supuesto, el gerente estándar no es adecuado.



Lis   (2001-12-21 18:38) [10]

Pido disculpas por el error tipográfico en la pregunta original. Por supuesto, se requiere alineación en bytes 8.



Páginas: 1 rama entera

Foro: "Principal";
Archivo actual: 2002.01.10;
Descargar: [xml.tar.bz2];

arriba





Memoria: 0.57 MB
Tiempo: 0.014 c
1-28512
Maximka
2001-12-21 17:12
2002.01.10
¿Cómo averiguar la resolución de pantalla actual?


6-28518
Sregey
2001-10-17 14:13
2002.01.10
Acerca de ServerWinSocket


1-28458
Aleksandr
2001-12-21 14:33
2002.01.10
Cómo destruir correctamente los componentes ScrollBar de un destructor


3-28403
Scully
2001-12-07 10:23
2002.01.10
Edición de un campo de tipo Fecha (fecha + hora)


14-28533
anod
2001-11-15 20:58
2002.01.10
La fuente de alimentación está zumbando





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish French
gallego georgiano Alemán Griego criollo haitiano Hebreo hindi Húngaro islandés Indonesian irlandés Italiano Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese Rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español