... что конкретная программа просто сообщает ЦП, чтобы она получала информацию с определенного адреса, и программа определяет, как ее обрабатывать.
В точку. Но ОЗУ не читается «последовательно», а означает « Оперативное запоминающее устройство», как раз наоборот.
Кроме того , зная , что байты это , вы даже не знаете , если это байты , или фрагмент большего элемента , как число с плавающей точкой.
Я хотел бы добавить к другим ответам, приведя некоторые конкретные примеры.
Посмотрим 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).