русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вычисление эффективного (исполнительного) адреса


Дата добавления: 2015-06-12; просмотров: 956; Нарушение авторских прав


Байт modR/M опеспечивает большую гибкость при выборе форм адресации. Команды, в которых после кода операции стоит байт modR/M, наиболее общие из всех команд. Для операндов, расположенных в памяти и описаных при помощи байта modR/M относительный адрес в выбранном сегменте складываеися из трех компонентов: - Смещение - Регистр базы - Регистр индекса (индексный регистр может умножаться на 2, 4 или 8)

+--------------------------------------------------------------+| Тип ссылки | Используемый сегмент | Правило выбора || | Используемый регистр | сегмента по умолчанию |+------------+----------------------+--------------------------|| Команды | Сегмент кода | Автоматически при выборе || | регистр CS | команды |+------------+----------------------+--------------------------|| Стек | Сегмент стека | Для команд занесения в || | регистр SS | стек и удаления из стека || | | Для некоторых ссылок с || | | использованием базовых || | | регистров ESP и EBP |+------------+----------------------+--------------------------|| Локальные | Сегмент данных | Все ссылки на данные, || данные | регистр DS | кроме стека и строк || | | назначения |+------------+----------------------+--------------------------|| Строки- |Дополнительный сегмент| Приемник в командах || приемники | регистр ES | обработки строк |+--------------------------------------------------------------+ Таблица 2-3 Правила выбора сегмента по умолчанию

Относительный адрес, который получается в результате суммирования указаных компонентов называется эффективным (исполнительным) адресом. Каждый из этих компонентов может иметь как положительное, так и отрицательное значение. На Рисунке 2-10 показаны все возможные варианты формирования исполнительного адреса при использовании байта modR/M. Т.к. смещение закодированно непосредственно в команде, оно используется для адресации фиксированных данных, таких как



  • Простые скалярные операнды
  • Начало статических массивов
  • Смещение поля внутри записи

База и индекс выполняют сходные функции. Оба эти компонента использует одинаковый набор регистров общего назначения. Оба могут использоваться для обращения по адресам, которые изменяются в процессе выполнения программы, таким как:

  • Параметры процедуры, локальные переменные в стеке.
  • Начало конкретной записи в наборе записей одинаковой структуры или в массиве записей.
  • Начало одномерного массива в многомерном.
  • Начало динамически созданного массива.

При использовании регистров общего назначения в качестве базы и индекса, следует помнить:

  • Использование регистра ESP в качестве индексного регистра недопустимо.
  • Если в качестве базы используются регистры ESP или EBP, по умолчанию выбирается сегмент SS. Во всех остальных случаях по умолчанию выбирается сегмент DS. Использования коэффициента масштабирования позволяет эффективно организовывать индексацию в массивах с 2-, 4- или 8-разрядными элементами. Масштабирование индексного регистра выполняется аппаратно, одновременно с вычислением адреса. Это исключает выполнение дополнительных операций сдвига или умножения.
+--------------------------------------------------------------+| || СЕГМЕНТ + БАЗА + ( ИНДЕКС * КОЭФФИЦИЕНТ ) + СМЕЩЕНИЕ || || + ... + + + + + + + || + + | EAX | | EAX | | 1 | | | || | CS | | ECX | | ECX | | | | Нет смещения | || | SS | | EDX | | EDX | | 2 | | | || | DS | | EBX | | EBX | | | | 8-разрядное | || | ES | + | ESP | + | ... | * | | + | смещение | || | FS | | EBP | | EBP | | 4 | | | || | GS | | ESI | | ESI | | | | 32-разрядное | || + + | EDI | | EDI | | 8 | | смещение | || + + + + + + + + || |+--------------------------------------------------------------+ Рисунок 2-10. Вычисление эффективного адреса

База, индекс и смещение могут использоваться в различных комбинациях: некоторые из компонентов могут быть пустыми. Коэффициент масштабирования может использоваться только совместно с индексом. Каждая возможная комбинация полезна для общего использования структур данных ассемблерными программами и программами языков высокого уровня.



<== предыдущая лекция | следующая лекция ==>
Операнды в памяти | Смещение


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.135 сек.