Cтраница 3
Характеризуется массив наименованием, длиной записи, максимально допустимой значностью реквизитов, датой формирования. Организуют массивы данных по последовательной и иерархической схеме. При последовательной организации массива в каждой записи содержится адрес размещения следующей порции данных. Для упрощения процесса поиска данных в массиве его записи располагаются с предварительной сортировкой. Ветвящиеся ( иерархические) массивы более прогрессивны для хранения и использования. В этом случае массив состоит из подмассивов различных уровней. В верхнем уровне объединяются общие сведения, но для каждой записи указывается адрес детализирующих сведений. Ветвящийся массив удобен для дополнения и выборки. Он требует меньше места при хранении. [31]
Листинг компилятора включает текст исходной программы и сообщения о результатах ее компиляции. Строки, включающие опции, не распечатываются. Каждую строку исходного текста компилятор дополняет слева значением счетчика адреса размещения перед началом ее трансляции. Эти адреса могут быть полезными для определения размера программы, а также при обработке аварийного дампа. [32]
![]() |
Размер кода Reversible Engine для функционального блока и программы. [33] |
Из приведенных выше диаграмм видно, что 16-разрядный код оказывается компактнее 8-разрядного. Объясняется это особенностями компиляции функциональных блоков. При вызове экземпляр функционального блока получает через стек единственный параметр - адрес размещения в памяти своих данных. В результате компилятор вынужден генерировать косвенные обращения к данным. Адреса области переменных в 8051 16-разрядные, что и вызывает рост кода при динамическом вычислении адресов переменных. [34]
Команды работы с байтами используются в PIC MK для пересылки данных между регистрами и выполнения математических операций над их содержимым. Несмотря на относительно небольшой набор команд, они позволяют реализовать целый ряд операций. Это связано, в частности, с возможностью указать в команде адрес размещения результата операции. [35]
При включении или извлечении записи из файла в операторе ввода-вывода указывается номер области ( ключ), в которую помещается или из которой извлекается запись. Значение ключа не запоминается в области. Физическая система управления вводом-выводом по заданному номеру области ( значению ключа) вычисляет адрес размещения записи па диске. [36]
Довольно значительная их часть не допускает перезаписи, поскольку содержит весьма важные компоненты - ядро операционной системы или резидентные механизмы различных подсистем. Поэтому разработчики системы должны предусмотреть выделение некоторой области памяти из обшей структуры памяти со страничной организацией пли по крайней мере предоставить параметр для настройки системы при ее установке. В некоторых системах фирмы IBM существует параметр генерации VIRTUAL REAL, позволяющий не только защитить физические страницы от изменений, вызываемых подкачкой, но и поставить в соответствие каждой логической странице строго определенный адрес размещения. Конечно, нетрудно представить себе случай, когда программу следует защитить от изменений, но конкретное расположение ее в памяти особой роли не играет. Использование параметра VIRTUAL REAL фактически означает, что виртуальные адреса, которыми манипулирует программа, должны совпадать с адресами соответствующих операндов в реальной памяти. Очевидно, следует с большой осторожностью подходить к решению вопроса о жестком закреплении за программами физических страниц, поскольку при этом уменьшается размер области памяти, управляемой динамически. [37]
Одним из способов преобразования части признака в адрес является способ открытой адресации, сущность которого состоит в следующем. Имеется N признаков, каждый из которых включает фиксированное количество десятичных цифр. В качестве адреса размещения признака в массиве берутся три десятичных разряда этого признака. В целях исключения неоднозначности преобразования признаков множества N в адреса память разделяют на секции. [38]
![]() |
Структура директивы загрузки Корректировать адреса. [39] |
Адресная часть оператора записывается в виде двух относительных простых или сложных этикеток или в виде целых чисел. Если в адресе константы присутствует этикетка, то его действительное значение зависит от места расположения программы в памяти, поэтому в результате трансляции на языке загрузки константа занимает две ячейки. В первой ячейке располагается директива загрузки Корректировать адрес. По этой директиве во время загрузки программы корректируются адреса константы на величину адреса размещения области в памяти. На рис. 4.6 приведена структура директивы. В разрядах 16 - 20 и 23 - 27 содержатся номера областей, к которым относятся адреса, указанные в константе. Номер области указывает на то, что соответствующий адрес корректируется на величину адреса расположения данной области. Если номер области отсутствует, то корректировка не производится. [40]
Обратим внимание на следующее: писать такую программу было значительно легче. Не требовалось перегружать память цифровыми кодами операций, адреса в форме отсчета от базы записываются короче, проверяются легче. Программу могут писать сразу несколько человек, каждый пишет адреса от своей базы. По окончании кусков программы она сшивается назначением базам конкретных адресов. Это можно сделать так, что ни пустых мест ( пропусков) не останется, ни накладок одних частей на другие не будет и в то же время программист сможет, зная значения баз, всегда найти точный адрес размещения в ОЗУ каждой команды или числа. [41]