... что конкретная программа просто сообщает ЦП, чтобы она получала информацию с определенного адреса, и программа определяет, как ее обрабатывать.
В точку. Но ОЗУ не читается «последовательно», а означает « Оперативное запоминающее устройство», как раз наоборот.
Кроме того , зная , что байты это , вы даже не знаете , если это байты , или фрагмент большего элемента , как число с плавающей точкой.
Я хотел бы добавить к другим ответам, приведя некоторые конкретные примеры.
Посмотрим 01000001
. Программа может скопировать его из одного места в другое как часть большого пакета данных, не обращая внимания на его значение. Но копирование этого адреса по адресу, используемому видеобуфером в текстовом режиме, приведет к тому, что буква A
будет отображаться в некоторой позиции на экране. Точно такое же действие, когда карта находится в графическом режиме CGA, будет отображать красный и синий пиксели.
В регистре это может быть число 65 как целое число. Выполнение арифметики для установки бита 32 может означать что-либо без контекста, но, в частности, может означать изменение буквы на нижний регистр.
CPU 8086 (все еще) имеет специальные инструкции под названием DAA ※, которые используются, когда регистр содержит 2 десятичных цифры, поэтому, если вы просто использовали эту инструкцию, вы интерпретируете ее как две цифры 41
.
Программы аварийно завершают работу, потому что слово памяти читается, думая, что это указатель, когда что-то еще хранилось там
Используя отладчик, проверяющий память, карта используется для направления интерпретации для отображения. Без этой символьной информации низкоуровневый отладчик позволяет вам указать: показывать этот адрес как 16-битные слова, показывать этот адрес как длинную с плавающей точкой, как строки ... что угодно. Если посмотреть на дамп сетевого пакета или неизвестный формат файла, выяснить это будет непросто.
Это основной источник мощи и гибкости в современной компьютерной архитектуре: ячейка памяти может означать что угодно , данные или инструкцию, подразумеваемые только в том, что они «значат» для программы тем, что она делает со значением и как это влияет на последующие операции. значение глубже целой ширины: эти символы ... символы в ascii или ebcdic? Формировать слова на английском или SQU код продукта? Адрес для отправки или обратный адрес, с которого он пришел? Самый низкий уровень интерпретации (логические биты, целое число типа, знаком или без знака; поплавок; BCD; указатель) контекстная на уровне набора команд, но вы видите , что это все контекст на каком - то уровне: вадрес это то, что он из-за местоположения он напечатан на конверте. Это контекстуально правилам почтальона, а не процессору. Контекст представляет собой один большой континуум с битами на одном конце.
※ Сноска: инструкция DAA кодируется в виде байта 00100111
. Таким образом, этот байт является вышеупомянутой инструкцией, если она читается в потоке команд, и цифрами, 27
если они интерпретируются как цифры bcd, и 0x27 = 39 как целое число, которое является цифрой 9 в ASCII, и частью таблицы прерываний (половина INT 13 2-байтовый адрес, используемый для процедур обслуживания BIOS).