Стили и методы программирования

             

и данными достаточно грубое. Полезно


Но разделение между командами и данными достаточно грубое. Полезно рассмотреть архитектуру, в которой предлагается так называемое тегирование. Смысл его заключается в том, что в ячейках (основной памяти) выделены специальные разряды, именуемые тегом, которые указывают тип хранимого в остальной части значения (см. рис. 2.2).


Рис. 2.2.  Структура ячейки при тегировании

Тегирование, реализованное аппаратно, дает следующие преимущества.

  • На аппаратном уровне происходит дополнительный контроль корректности вычислений и улучшается диагностика ошибок.
  • Элементарные операции становятся более адекватными данным (например, сложение модифицируется в соответствии с типами операндов: целые, действительные, ссылки). Время выполнения программ сокращается по сравнению с традиционными машинами соответствующей мощности.


В языковых терминах тегирование выражается как динамическая (определяемая при выполнении программы) типизация данных. В этом отношении тегирование в аппаратуре лет на десять опередило первые экспериментальные попытки динамической типизации в языках программирования. Сейчас динамическая типизация, с логической точки зрения полностью аналогичная тегированию, является одним из инструментов объектно-ориентированного программирования.

В языке C тегированное данное соответствует описанию структуры, подобному этому:

struct tagged { int type_tag; union { int x; float y; } }

В языке Pascal тегированная ячейка может быть представлена следующей вариантной структурой:

record case tag : Boolean of true: (i :integer); false: (r :real) end;

Тегирование великолепно сочетается со структурным программированием, и поэтому практически всегда используется вместе с модификацией адресации и структуры памяти, называемой стековой архитектурой. При реализации языков высокого уровня на современных системах программирования практически всегда создается структура контекстов.

В стековой архитектуре машины уже физическая память организована как структурированный стек контекстов (см.

Содержание  Назад  Вперед