Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

В IBM System / 360 через современный г / Архитектура , постоянный адрес или «adcon» является языком ассемблера типа данных , который содержит адрес места нахождения в памяти компьютера . Константа адреса может иметь длину один, два, три или четыре байта, хотя adcon размером менее четырех байтов обычно используется для хранения выражения для небольшого целого числа, такого как длина, относительный адрес или значение индекса, и делает это. вообще не представляют адрес. Константы адреса определяются с помощью оператора "DC" на языке ассемблера .

Другие компьютерные системы имеют аналогичные средства, хотя могут использоваться другие названия.

Типы адресных констант [ править ]

В adcons обычно хранится четырехбайтовый перемещаемый адрес, однако можно указать длину константы. Например, AL1(stuff)определяет однобайтовый adcon, используемый в основном для небольших констант с перемещаемыми значениями. Другие типы adcon могут точно так же иметь указание длины.

В adcons типа V хранится внешняя ссылка, которая разрешается редактором ссылок .

Y используется для двухбайтовых адресов (полуслова). Рекламные символы 'Y' могут напрямую адресовать до 32 Кбайт хранилища и не используются широко, поскольку ранние ассемблеры System / 360 не поддерживали тип данных 'Y'. Ранние системы DOS / 360 и BOS / 360 больше использовали Y adcon, поскольку машины, на которых работали эти системы, имели ограниченное хранилище. Обозначение «AL2 ( значение )» теперь обычно используется вместо «Y ( значение )» для определения 16-битного значения.

Константы Q- адреса содержат не фактические адреса, а смещение во внешней фиктивной секции  - аналогично таблице глобального смещения Linux (см. Позиционно-независимый код ). J adcon устанавливается редактором связей провести кумулятивную длину секции внешней пустышки, и на самом деле не содержит адрес.

Другими типами адресных констант являются R, который имел особое значение для TSS / 360 для адресации PSECT , и S , который хранит адрес в формате базового смещения - 16-битное значение, содержащее 4-битный общий номер регистра и 12-битное смещение, тот же формат, что и адреса, закодированные в инструкциях.

System z поддерживает типы AD , JD , QD и VD , которые представляют 8-байтовые (двойные слова) версии типов A, J, Q и V для хранения 64-битных адресов.

Возможность перемещения [ править ]

Номинальное значение в «DC» представляет собой список выражений , заключенных в скобки. Выражения могут быть абсолютными , перемещаемыми или сложными перемещаемыми .

Абсолютное выражение может быть полностью вычислено во время сборки и не требует дальнейшей обработки редактором связей. Например, DC A(4900796)имеет абсолютное номинальное значение.

Перемещаемое выражение - это выражение, которое содержит один или несколько терминов, которые требуют перемещения редактором связей, когда программа ls связана, например, в следующем коде «ACON» имеет перемещаемое номинальное значение.

LAB DC H'0 ' ...ACON DC A (LAB-4)

Сложное перемещаемое выражение содержит термины, относящиеся к адресам в разных исходных модулях. Например, DC A(X-Y)где «X» и «Y» находятся в разных модулях.

Примеры [ править ]

Все это действительные рекламные коды: -

ADCONS DS 0A выровненная метка неявной длины 4 и фактической длины 0 DC A (FIELDA) 4-байтовое слово, выровненное, абсолютный адрес переменной 'FIELDA' DC AL4 (FIELDA), как указано выше, но не (обязательно) выровненный по границе слова DC AL3 (FIELDA) трехбайтовый эквивалент вышеуказанного (максимум 16 мегабайт) DC AL2 (FIELDA-TABLES) двухбайтовое смещение от метки 'TABLES' до начала 'FIELDA' DC AL2 (L'FIELDA) - два байта поля, называемого 'FIELDA' (= 26 в десятичной системе) DC AL1 (C'A ') шестнадцатеричное значение символа EBCDIC' A '(= C1 в шестнадцатеричном формате) DC A (FIELDA-C'A ') 4-байтовый, выровненный, абсолютный адрес -> 192 байта до начала FIELDA DC A (*) 4-байтовый, выровненный, адрес этого adcon (* означает «здесь») DC S (SUBRTNA) 2 байта, выровненная база + адрес смещения метки программы "SUBRTNA" DC X'47F0 ', S (SUBRTNA) инструкция безусловного перехода (построенная с использованием адресной константы S-типа) DC SL2 (SUBRTNA) 2 байта, UNALIGNED база + адрес смещения метки программы "SUBRTNA"STAB DC SL2 (SUBRTNA, SUBRTNB, SUBRTNC и т. Д.) Массив невыровненных ADCONS S-ТИПА *INDIRECT DC A (* + 4) адрес следующего байта после этого adcon (adcon V-типа) DC V (SUBRTNX) адрес точки входа внешней подпрограммы DC AL1 (-1) однобайтовое отрицательное значение (= x'FF '), часто используемое как ограничитель таблицы.SUBRTNA DS 0Y начало (внутренней) подпрограммы A. инструкции идут сюда.TABLES DS 0Y базовый адрес для раздела таблиц (с выравниванием по половине слов)LENGTHS DC Al2 (5,27,56,83,127,32563) произвольный массив шестнадцатеричных длин 6 x 2 байта (определяемых их десятичными значениями)PARMLIST DC A (HERE, THERE, EVWHERE, -1) массив из 3 x 4-байтовых выровненных указателей на различные метки полей / точки входа* с дополнительным конечным указателем отрицательного значения (= X'FFFFFFFF ')..ZERO_255 DC 256AL1 (* - ZERO_255) массив 256 однобайтовых шестнадцатеричных значений 00-FF* --------- конец примеров adcon ---------------- *FIELDA DC C'ABCDEFGHIJKLMNOPQRSTUVWXYZ 'поле, содержащее строку символов (не adcon) = AZ

См. Также [ править ]

Указатель (информатика)

Внешние ссылки [ править ]