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