Yo sé que para acceder a la memoria, se que se usan dos registros de 16 bits (uno se aprovecha entero, y el otro se aprovecha parte, para así sumar 20 bits, de donde viene la limitación). La duda es, ¿por qué no usaron esos dos registros al completo para así poder tener segmentos de 4GB? Gracias
Hola!
Revisa ésto (https://en.wikipedia.org/wiki/X86_memory_segmentation) y ésto (la parte que dice "16-bit application") (https://en.wikipedia.org/wiki/16-bit) y ésto (https://en.wikipedia.org/wiki/Intel_Memory_Model). :P
Saludos!
Cita de: Wikipediasegment:offset, typically in hexadecimal notation. In real mode, in order to calculate the physical address of a byte of memory, the hardware shifts the contents of the appropriate segment register 4 bits left (effectively multiplying by 16), and then adds the offset.
For example, the logical address 7522:F139 yields the 20-bit physical address:
75220 + F139 = 84359
Eso creo que lo entiendo. Mi duda es que si se podría hacer hecho que una dirección de 32 bits lineal se dividiese en dos y se guardase en registros de 16 bits individuales. Cada parte de esa dirección no tendría porque tener un significado (tales como selector y desplazamiento). A lo mejor no capto la idea global y me estoy haciendo un lío yo solo xD
La explicación a tu pregunta es ésta (sección "Real mode" de x86 memory segmentation (https://en.wikipedia.org/wiki/X86_memory_segmentation)):
Citar
The effective 20-bit address space of real mode limits the addressable memory to 2^20 bytes, or 1,048,576 bytes (1 MB). This derived directly from the hardware design of the Intel 8086 (and, subsequently, the closely related 8088), which had exactly 20 address pins. (Both were packaged in 40-pin DIP packages; even with only 20 address lines, the address and data buses were multiplexed to fit all the address and data lines within the limited pin count.)
Saludos!
Vaya, eso no lo leí xD Muchas gracias por todas tus respuestas!!