... que un programa en particular solo le dice a la CPU que busque la información de una dirección específica y el programa define cómo tratarla.
Exactamente. Pero la RAM no se lee "secuencialmente" y significa Memoria de acceso aleatorio, que es exactamente lo contrario.
Además de saber lo que un byte es , que ni siquiera sabe si es un byte , o un fragmento de un artículo más grande como un número de coma flotante.
Me gustaría agregar a otras respuestas dando algunos ejemplos específicos.
Considere 01000001
. El programa podría copiarlo de un lugar a otro como parte de un gran paquete de datos sin tener en cuenta su significado. Pero copiar eso a la dirección utilizada por el búfer de video en modo texto hará que la letra se A
muestre en alguna posición en la pantalla. La misma acción exacta cuando la tarjeta está en un modo de gráficos CGA mostrará un píxel rojo y un píxel azul.
En un registro, podría ser el número 65 como un entero. Hacer aritmética para establecer el bit de 32 podría significar cualquier cosa sin contexto, pero podría específicamente cambiar una letra a minúscula.
La CPU 8086 (todavía) tiene instrucciones especiales llamadas DAA ※ que se usan cuando el registro contiene 2 dígitos decimales, por lo que si acaba de usar esa instrucción la está interpretando como dos dígitos 41
.
Los programas se bloquean porque se lee una palabra de memoria pensando que es un puntero cuando se almacena algo allí.
Usando un depurador, inspeccionando la memoria, se usa un mapa para guiar la interpretación para su visualización. Sin esta información de símbolo, un depurador de bajo nivel le permite especificar: mostrar esta dirección como palabras de 16 bits, mostrar esta dirección como punto flotante largo, como cadenas ... lo que sea. Observar un volcado de paquetes de red o un formato de archivo desconocido, resolverlo es un desafío.
Esa es una fuente importante de poder y flexibilidad en la arquitectura moderna de la computadora: una celda de memoria puede significar cualquier cosa , datos o instrucción, implícita solo en lo que "significa" para el programa por lo que hace con el valor y cómo afecta las operaciones posteriores. el significado es más profundo que el ancho entero: ¿son estos caracteres ... caracteres en ascii o ebcdic? ¿Formando palabras en inglés o códigos de producto SQU? ¿La dirección para enviar o la dirección de devolución? La interpretación más bajo nivel (bits lógicos; número entero similar, con o sin signo; flotador; BCD; puntero) es contextual a nivel de instrucción-set, pero se ve que es todo el contexto en algún nivel: el dela dirección es lo que es debido a la ubicación que está impresa en el sobre. Es contextual a las reglas del cartero, no de la CPU. El contexto es un gran continuo, con bits en un extremo.
※ Nota al pie: La instrucción DAA está codificada como un byte 00100111
. De modo que ese byte es la instrucción mencionada anteriormente si se lee en el flujo de instrucciones, y los dígitos 27
si se interpretan como dígitos bcd, y 0x27 = 39 como un entero, que es el número 9 en ASCII, y parte de la tabla de interrupción (mitad de INT 13 Dirección de 2 bytes, utilizada para las rutinas de servicio del BIOS).