¿como Windows detecta fallos de alineamiento?

Iniciado por Usuario887, 24 Agosto 2020, 23:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Usuario887

Como los accesos a memoria pueden ser de 8, 16 y 32 bits, y una direccion limite es especifica, podria establecerse, para un programa:

direccion base de su unica pagina (usando este modelo descriptivo de paginacion): 0
direccion limite: 0a

Si, por ejemplo, un programa accede, de esta forma, al byte que se encuentra en la direccion de memoria 0b:

Código (asm) [Seleccionar]
mov al, [0b]

El sistema operativo pude indentificar que es un acceso a memoria ilegal. Sin embargo, ¿y en este caso?:

Código (asm) [Seleccionar]
mov eax, [08]

Se esta accediendo a la direccion 0b, sin embargo, la direccion que se esta especificando es 08. Se que Windows detecta este acceso a memoria ilegal porque lo acabo de intentar, sin embargo, ¿alguien sabe como lo hace? se que nadie es ingeniero de Microsoft pero me pregunto si existe una aplicacion general en sistemas operativos y asi...

Saludos y gracias de antemano por la respuesta.

Randomize

¿Te has fijado como cuando iniciamos una aplicación por segunda vez ésta va más rápida que en la primera vez?

Se guardan espacios de memoria y se vuelven a leer, todo eso según tú es ilegal, hay que joderse...


¡Qué le vamos a hacer!

Usuario887

Hola, Randomize. Gracias por tu respuesta, pero no has entendido mi pregunta:

Imagina que la quanta de datos de un sistema son 32 bits (quiero decir, imagina la realidad actual para la arquitectura x86).

Ahora, imagina que a partir de la direccion de memoria 10, el programa en cuestion estaria accediendo a una parte ilegal de la memoria. Sin embargo, si haces un acceso de tipo DWORD (32 bits y en Windows) en la direccion de memoria 0f, estarias accediendo a 0f, 10, 11 y 12, sin embargo, el acceso se esta especifcando como un acceso a 0f, una direccion legal de memoria.

¿como el Memory Management de Windows deduce que a partir de 0f, el acceso de un DWORD seria ilegal? Es una deduccion inteligente, y Windows es un sistema mecanico.

Saludos.