Язык ассемблера IBM Basic и его преемники
Парадигма | язык ассемблера |
---|---|
Разработчик | ИБМ |
Впервые появился | 1964 |
ТЫ | Поддержка базового программирования IBM , базовая операционная система/360 |
Лицензия | бесплатно |
Парадигма | язык макроса ассемблера |
---|---|
Разработчик | ИБМ |
Впервые появился | 1966 |
ТЫ | IBM OS/VS , DOS/VS , VM/370 и связанные с ними |
Лицензия | разнообразный |
Парадигма | язык макроса ассемблера |
---|---|
Разработчик | ИБМ |
Впервые появился | 1992 |
Стабильная версия | Версия 1 Выпуск 6
|
ТЫ | IBM MVS/ESA и преемники, VM/ESA и преемники, VSE/ESA и преемники |
Лицензия | собственный |
Веб-сайт | https://www.ibm.com/products/high-level-assembler-and-toolkit-feature |
Основные реализации | |
Ассемблер высокого уровня |
Язык ассемблера IBM Basic и его преемники — это серия языков ассемблера и ассемблеров, для IBM System/360 мэйнфреймов и их преемников посредством IBM Z. созданных
Первый из них, базовый язык ассемблера ( BAL ), представляет собой чрезвычайно ограниченный язык ассемблера , представленный в 1964 году и используемый в системах 360 со всего 8 КБ основной памяти, а также только устройством для чтения карт , перфоратором и принтером для ввод/вывод как часть поддержки базового программирования IBM (BPS/360). Базовый ассемблер для BAL также был доступен как часть Basic Operating System/360 (BOS/360).
Впоследствии для System/360 появился язык ассемблера, который имел более мощные функции и удобство использования, например, поддержку макросов . Этот язык и линейка ассемблеров, реализовавших его, продолжали развиваться для System/370 и последующих архитектур, наследуя и расширяя его синтаксис. Некоторые представители компьютерной индустрии называли их общим термином «Базовый язык ассемблера» или «BAL». [1] Однако многие этого не сделали, и сама IBM обычно называла их просто «языком ассемблера System/360». [2] как «Ассемблер» для данной операционной системы или платформы, [3] или подобные имена. Конкретные ассемблеры были известны под такими именами. [а] как Ассемблер E, Ассемблер F, Ассемблер H и так далее. Программисты, использующие этот язык и это семейство ассемблеров, также называют их ALC (кодирование на языке ассемблера) или просто «ассемблер».
Последний производный язык известен как IBM High-Level Assembler ( HLASM ).
Общие характеристики
[ редактировать ]Поскольку это язык ассемблера , BAL использует собственный набор инструкций архитектуры мэйнфрейма IBM, на которой он работает, System/360 .
Преемники BAL используют собственные наборы инструкций архитектур мэйнфреймов IBM, на которых они работают, включая System/360 , System/370 , System/370-XA , ESA/370 , ESA/390 и z/Architecture .
Простота машинных инструкций означает, что исходный код программы, написанной на ассемблере, обычно намного длиннее, чем эквивалентная программа, скажем, на COBOL или Fortran . В прошлом считалось, что скорость программ на ассемблере, написанных вручную, компенсирует этот недостаток, но с появлением оптимизирующих компиляторов, языка C для мэйнфреймов и других достижений ассемблер потерял большую часть своей привлекательности. Однако IBM продолжает модернизировать ассемблер, и он по-прежнему используется, когда потребность в скорости или очень точном управлении имеет первостепенное значение. Однако все преемники BAL от IBM включали в себя сложную функцию макросов, которая позволяет писать гораздо более компактный исходный код.
Другая причина использования ассемблера заключается в том, что не ко всем функциям операционной системы можно получить доступ на языках высокого уровня. Интерфейсы прикладных программ операционных систем мэйнфреймов IBM определяются как набор «макро» инструкций языка ассемблера, которые обычно вызывают вызов супервизора ( SVC
) [например, в z/OS] или Диагностика ( DIAG
) [например, в z/VM] инструкции для вызова подпрограмм операционной системы. Можно использовать службы операционной системы из программ, написанных на языках высокого уровня, с помощью подпрограмм ассемблера.
Формат оператора ассемблера
[ редактировать ]Формат операторов ассемблера отражает структуру перфокарты с 80 столбцами, хотя последующие версии ослабили большинство ограничений.
- Необязательная метка или имя оператора представляет собой строку буквенно-цифровых символов, начинающуюся в столбце 1. Первый символ должен быть буквенным. В более поздних версиях к разрешенным символам, используемым в метках, были добавлены @, #, $ и _, а размер увеличен с первоначальных шести до восьми символов, а затем до почти неограниченной длины.
- Код операции или «мнемоника» может начинаться в любом столбце справа от столбца 1 и отделяться от метки оператора пробелом. Код операции представлял собой всего лишь машинную инструкцию (макросы не были доступны), поэтому обычно он состоял из 1, 2, 3 или, реже, из 4 букв. Код операции был расширен и теперь может содержать до восьми символов, а затем и до практически неограниченной длины.
- Поле операнда может начинаться в любом столбце справа от кода операции и отделяться от кода операции хотя бы одним пробелом. Пробелы недопустимы в операндах, за исключением символьных констант. Поле операнда, состоящее из одного или нескольких операндов, является необязательным в зависимости от кода операции.
- Необязательные комментарии могут отображаться справа от поля операнда, разделенные хотя бы одним пробелом.
- Базовый язык ассемблера не позволяет продолжать операторы. Более поздние версии ассемблера указывают на продолжение появлением любого непустого символа в столбце 72 продолжаемого оператора. Базовый язык ассемблера требует, чтобы столбец 72 был пустым.
- «Комментарий с полной карточкой» обозначается звездочкой (*) в столбце 1.
- Столбцы карт 73–80, называемые полем идентификационной последовательности , могут использоваться программистом для любых целей, но обычно содержат порядковые номера для использования перемешанной колоды карт.
Базовый язык ассемблера также допускает альтернативный формат операторов, когда оператор начинается в столбце 25, что позволяет вставлять собранную инструкцию в ту же карту, начиная с столбца 1. Эта опция не была продолжена в более поздних версиях ассемблера.
Виды инструкций
[ редактировать ]В исходном коде программы, написанной на ассемблере, встречаются три основных типа инструкций.
Инструкции ассемблера
[ редактировать ]Инструкции ассемблера, иногда называемые директивами , псевдооперациями или псевдооперациями в других системах, представляют собой запросы ассемблеру на выполнение различных операций в процессе генерации кода. Например, CSECT
означает «начать здесь раздел кода»; DSECT
предоставляет определения данных для структуры, но не генерирует код; DC
определяет константу, которая будет помещена в объектный код.
Одной из наиболее важных инструкций ассемблера является USING
, который поддерживает адресацию со смещением базы архитектуры S/360. Он помогает ассемблеру определить, какой базовый регистр и смещение следует использовать для относительного адреса. В BAL оно ограничивалось формой
USING base,reg-1,...,reg-n
Адреса машинных инструкций в S/360 определяют смещение (0–4095 байт) от значения в базовом регистре ; хотя в более поздних версиях архитектуры были добавлены форматы относительных адресов, более старые форматы по-прежнему используются многими инструкциями. USING
позволяет программисту сообщить ассемблеру, что указанные базовые регистры предположительно содержат адрес «base», base+4096 (если указано несколько регистров) и т. д. Это лишь дает программисту ярлык, которому в противном случае пришлось бы укажите базовый регистр в каждой инструкции. Программисты по-прежнему несут ответственность за фактическую загрузку адреса «базы» в регистр перед написанием кода, который зависит от этого значения.
Соответствующие DROP
инструкция ассемблера аннулирует предыдущую USING
.
Машинные инструкции (мнемонические)
[ редактировать ]Существует связь «один к одному» с машинными инструкциями . Полный набор мнемонических команд описан в Принципах работы. [4] руководство для каждого набора инструкций. Примеры:
* This is a comment line
* Load the fullword integer stored at the
* location labeled 'ZIGGY' into general register 3:
L 3,ZIGGY
SLA 4,5 shift the value in general register 4 left by 5 bits
MVC TARGET,SOURCE move characters from location 'SOURCE' to 'TARGET'
AP COUNT,=P'1' add 1 to value in memory location 'COUNT' (packed decimal format)
B NEXT unconditional branch to label 'NEXT'
HERE EQU * This is a label
CLC TARGET,=C'ADDRESS' Compare memory location 'TARGET' to string 'ADDRESS'
BE THERE branch if equal to program label 'THERE'
Общепринятые стандарты, хотя и не обязательные, включают идентификацию регистров общего назначения с помощью мнемоники. В отличие от ассемблеров некоторых других систем, таких как язык ассемблера X86 , мнемоника регистров не является зарезервированными символами, а определяется через EQU
утверждения в других частях программы. Это улучшает читаемость программ на языке ассемблера и обеспечивает перекрестную ссылку на использование регистров. Таким образом, обычно в программе на ассемблере вы можете увидеть следующее:
R3 EQU 3
...
L R3,ZIGGY
Некоторые примечательные инструкций : мнемоники BALR
[б] для вызова, сохраняющего обратный адрес и код состояния в регистре, SVC
, [с] DIAG
, [д] и ZAP
. [5]
одно, два или три полуслова Машинные инструкции System/360 имеют длину (от двух до 6 байтов). Первоначально существовало четыре формата инструкций, обозначаемых первыми двумя битами поля кода операции; В z/Architecture добавлены дополнительные форматы.
Макросы и условная сборка
[ редактировать ]Ассемблер базовой поддержки программирования не поддерживал макросы . Более поздние версии ассемблера, начиная с Assembler D. [6] позволяют программисту группировать инструкции в макросы и добавлять их в библиотеку, которую затем можно вызывать в других программах, обычно с параметрами, такими как средства препроцессора в C и родственных языках. Макросы могут включать инструкции условного ассемблера, такие как AIF
(конструкция «if»), используемая для генерации различного кода в соответствии с выбранными параметрами. Это делает макросы этого ассемблера очень мощными. Хотя многострочные макросы в C являются исключением, определения макросов в ассемблере могут легко состоять из сотен строк.
Макросы операционной системы
[ редактировать ]Большинству программ потребуются услуги операционной системы , а ОС предоставляет стандартные макросы для запроса этих услуг. Они аналогичны Unix системным вызовам . Например, в MVS (позже z/OS) STORAGE
(с OBTAIN
параметр) динамически выделяет блок памяти и GET
извлекает следующую логическую запись из файла.
Эти макросы зависят от операционной системы; В отличие от некоторых языков более высокого уровня, языки ассемблера мэйнфреймов IBM не предоставляют независимые от операционной системы операторы или библиотеки для распределения памяти, выполнения операций ввода-вывода и т. д., а различные операционные системы мэйнфреймов IBM несовместимы в системной службе. уровень. Например, запись последовательного файла будет по-разному кодироваться в z/OS и z/VSE.
Примеры
[ редактировать ]Следующий фрагмент показывает, как на ассемблере будет выполняться логика «Если SEX = 'M', добавить 1 к MALES, иначе добавить 1 к FEMALES».
CLI SEX,C'M' Male?
BNE IS_FEM If not, branch around
L 7,MALES Load current value of MALES into register 7
LA 7,1(7) add 1
ST 7,MALES store back the result
B GO_ON Finished with this portion
IS_FEM EQU * A label
L 7,FEMALES Load current value in FEMALES into register 7
LA 7,1(7) add 1
ST 7,FEMALES store back the result
GO_ON EQU * - rest of program -
*
MALES DC F'0' Counter for MALES (initially=0)
FEMALES DC F'0' Counter for FEMALES (initially=0)
Далее следует вездесущее «Hello, World!» программа и при запуске в операционной системе IBM, такой как OS/VS1 или MVS , будет отображать слова «Hello, World!» на консоли оператора:
HELLO CSECT The name of this program is 'HELLO'
* Register 15 points here on entry from OPSYS or caller.
STM 14,12,12(13) Save registers 14,15, and 0 thru 12 in caller's Save area
LR 12,15 Set up base register with program's entry point address
USING HELLO,12 Tell assembler which register we are using for pgm. base
LA 15,SAVE Now Point at our own save area
ST 15,8(13) Set forward chain
ST 13,4(15) Set back chain
LR 13,15 Set R13 to address of new save area
* -end of housekeeping (similar for most programs) -
WTO 'Hello, World!' Write To Operator (Operating System macro)
*
L 13,4(13) restore address to caller-provided save area
XC 8(4,13),8(13) Clear forward chain
LM 14,12,12(13) Restore registers as on entry
DROP 12 The opposite of 'USING'
SR 15,15 Set register 15 to 0 so that the return code (R15) is Zero
BR 14 Return to caller
*
SAVE DS 18F Define 18 fullwords to save calling program registers
END HELLO This is the end of the program
WTO
— это ассемблерный макрос, генерирующий вызов операционной системы. Благодаря сохранению регистров, а затем их восстановлению и возврату, эту небольшую программу можно использовать как пакетную программу, вызываемую непосредственно языком управления заданиями операционной системы (JCL), например:
// EXEC PGM=HELLO
или, альтернативно, ее можно ВЫЗВАТЬ как подпрограмму из такой программы:
CALL 'HELLO'
Версии
[ редактировать ]За исключением ассемблеров для IBM System/360 Model 20 , ассемблеры IBM были в значительной степени совместимы с предыдущими версиями. Различия заключались в основном в сложности допустимых выражений и обработке макросов. Первоначально ассемблеры OS/360 обозначались в соответствии с их требованиями к памяти.
Ассемблер базовой поддержки программирования
[ редактировать ]Ассемблер для BPS — это настоящий «базовый ассемблер». Он предназначался для загрузки с карт и работал на системе System/360 с памятью 8 КБ (кроме модели 20). Он не поддерживает макрокоманды или расширенную мнемонику (например, BH вместо BC 2 для перехода, если код состояния 2 указывает на высокое значение сравнения). Он может собирать только один раздел управления и не допускает фиктивных разделов (определений структуры). Выражения в скобках не допускаются, а число выражений ограничено тремя терминами, причем единственными операторами являются «+», «-» и «*». [7] : 59–61
Ассемблер базовой операционной системы
[ редактировать ]Базовая операционная система имеет две версии ассемблера. Оба требуют 16 КБ памяти: один резидентный на ленте, другой на диске. [8] : 7–8
Соберите D
[ редактировать ]Ассемблер D представлял собой ассемблер DOS/360 для машин с объемом памяти 16 КБ. Он выпускался в двух версиях: вариант 10 КБ для машин с памятью минимум 16 КБ и вариант 14 КБ для машин с 24 КБ. Ассемблер F-уровня также был доступен для компьютеров DOS с объемом памяти 64 КБ и более. Сборщики D предлагали почти все функции более высоких версий. [9] : 7
Ассемблер E и F
[ редактировать ]Ассемблер E был разработан для работы в системе OS/360 с объемом оперативной памяти минимум 32 КБ, при этом самому ассемблеру требовалось 15 КБ. [10] : 2 Ассемблер F может работать как под DOS/360, так и под OS/360 в системе с памятью 64 КБ, при этом ассемблеру требуется 44 КБ. [11] [12] [13] Эти ассемблеры являются стандартной частью OS/360; сгенерированная версия была указана при создании системы (SYSGEN).
Ассемблер Х
[ редактировать ]Ассемблер H работает на OS/360 и последующих версиях ; он был быстрее и мощнее, чем Ассемблер F, но язык макросов не был полностью совместим.
Assembler H версии 2 был анонсирован в 1981 году и включает поддержку расширенной архитектуры (XA), включая AMODE
и RMODE
директивы. [14] : 3-28 Он был снят с продажи в 1994 году, а поддержка закончилась в 1995 году. Его заменил High Level Assembler. [15]
Ассемблер XF
[ редактировать ]Assembler XF — это в основном совместимое обновление Assembler F, которое включает новые инструкции по архитектуре System/370. Эта версия предоставляет общий ассемблер для систем OS/VS, DOS/VS и VM. Другие изменения включают ослабление ограничений на выражения и обработку макросов. Для Ассемблера XF требуется минимальный размер раздела/региона 64 КБ (виртуальный). Рекомендуемый размер — 128 КБ. [16] : 73
Ассемблер высокого уровня
[ редактировать ]High Level Assembler или HLASM был выпущен в июне 1992 года, заменив IBM Assembler H версии 2. [17] [18] Он был транслятором по умолчанию для System/370 и System/390 и поддерживал операционные системы MVS, VSE и VM. По состоянию на 2023 год это язык программирования IBM текущий ассемблерный для z/OS , z/VSE , z/VM и z/TPF операционных систем на z/ мейнфреймах Architecture . Выпуск 6 и более поздние версии также работают в Linux и генерируют объектные файлы ELF или GOFF (эту среду иногда называют Linux в IBM Z ). [19] Работая в IBM, Джон Роберт Эрман создал и был ведущим разработчиком HLASM. [и] и считается «отцом ассемблера высокого уровня». [21]
Несмотря на название, HLASM сам по себе не обладает многими функциями, обычно присущими ассемблеру высокого уровня . Название может происходить от дополнительных возможностей макроязыка, таких как возможность писать пользовательские функции. Ассемблер во многом похож на Ассемблер H и Ассемблер (XF), включающий модификации SLAC (Стэнфордский линейный ускоритель). Среди добавленных функций было указание на CSECT
/ DSECT
для счетчика местоположения, зависимый [ф] и помечены [г] USING
заявления, список USING
операторы, активные в данный момент, индикация того, читается или записывается переменная в перекрестной ссылке, а также разрешение имен символов в смешанном регистре. [22] RSECT
Директива (раздел управления только для чтения) позволяет ассемблеру проверять повторный вход для каждой секции. RSECT
ранее был «недокументирован и непоследовательно реализован в Ассемблере H». [23] : 41
Набор инструментов ассемблера высокого уровня
[ редактировать ]Набор инструментов High Level Assembler Toolkit является дополнением к High Level Assembler, приобретаемым отдельно. В набор инструментов входят: [24]
- Набор структурированного программирования макросов —
- ЕСЛИ/ELSE/ENDIF
- ДЕЛАТЬ/КОНЕЦДО
- СТРТСРЧ/ОРЕЛЬСЕ/ENDLOOP/ENDSRCH
- CASENTRY/CASE/ENDCASE
- ВЫБРАТЬ/КОГДА/ИНАЛЬНО/ENDSEL.
- Дизассемблер .
- «Инструмент понимания программы» ( помощь в реинжиниринге ).
- Утилита Source XREF (возможность перекрестных ссылок).
- Интерактивное средство отладки.
- Улучшенный SuperC (инструмент сравнения исходных кодов).
Специализированные версии
[ редактировать ]Сборщик пакетов поддержки 7090/7094
[ редактировать ]Пакет поддержки IBM 7090/7094, известный как SUPPAK, «состоит из трех программ, предназначенных для того, чтобы программы, написанные для System 360, можно было собирать, тестировать и выполнять на IBM 709, 7090, 7094 или 7094 II».
Этот кросс-ассемблер работает в системе 7090 или 7094 и использовался, когда System/360 находился в разработке. [7] [25] Этот ассемблер поддерживает шестибитный набор символов BCD , а также восьмибитный EBCDIC .
Сборщики IBM System / 360 Model 20
[ редактировать ]IBM предоставила два ассемблера для модели 20: базовый ассемблер модели 20 и ассемблер модели 20 DPS/TPS. Оба поддерживают только инструкции, доступные на модели 20, включая уникальные инструкции. CIO
, TIO
, XIOB
, SPSW
, BAS
, BASR
, и HPR
. [26] : 110 Базовый ассемблер — это немного более ограниченная версия базового ассемблера System/360; [27] в частности, длина символов ограничена четырьмя символами. Эта версия способна работать в системе с памятью 4 КБ, а поддержка макросов ограничена макросами IOCS . Версии карт представляют собой двухпроходные ассемблеры, которые поддерживают только ввод/вывод карт. Резидентные версии ленты являются однопроходными и используют магнитную ленту для промежуточного хранения. Программы, собранные с помощью ассемблера CPS, могут адресовать максимум 16 КБ. [27] : 7–8
Ассемблер DPS/TPS — это несколько ограниченная версия ассемблера System/360 BPS/BOS. [26] : 132–134
Ассемблер IBM System/360 Model 44 PS
[ редактировать ]Ассемблер IBM System/360 Model 44 обрабатывает язык, который является «выбранным подмножеством» языка ассемблера OS/360 и DOS/360.
Самое главное, что в ассемблере Model 44 отсутствует поддержка макросов и операторов продолжения. С другой стороны, он имеет ряд функций, отсутствующих в других ассемблерах System/360, в частности инструкции по обновлению исходного набора данных образа карты , называемого общим, и неявное определение SETA
собрать переменные. [28]
Он не поддерживает инструкции «хранилище-хранилище» (SS) или преобразование в двоичный формат ( CVB
), преобразовать в десятичный формат ( CVD
), читать прямо ( RDD
) и пишите в директ ( WRD
) инструкции. [29] Он включает в себя четыре инструкции, уникальные для модели 44: Изменение маски приоритета ( CHPM
), Загрузить специальный PSW ( LPSX
), Читать прямое слово ( RDDW
) и Написать прямое слово ( WRDW
).
Он также включает в себя директивы для обновления исходной программы — функцию, выполняемую служебными программами в других системах ( SKPTO
, REWND
, NUM
, OMIT
и ENDUP
). [29] : 53, 73
Ассемблер IBM System/360 TSS
[ редактировать ]Ассемблер системы разделения времени System/360 Model 67 имеет ряд отличий в директивах для поддержки уникальных функций TSS. PSECT
Директива генерирует раздел управления прототипом, содержащий перемещаемые адресные константы и изменяемые данные, используемые программой. [30] : 143
Ассемблер Г
[ редактировать ]«Ассемблер G» — это набор модификаций, внесенных в Ассемблер F в 1970-х годах Университетом Ватерлоо (исходный код Ассемблера F был/есть с открытым исходным кодом). Улучшения в основном заключаются в улучшенной обработке ввода/вывода и улучшенной буферизации, что значительно ускоряет сборки. [31] «Ассемблер G» никогда не был продуктом IBM.
Сборщики сторонних производителей
[ редактировать ]Для особых сред существовало несколько IBM-совместимых ассемблеров. [32]
- Серии Univac 90/60, 90/70 и 90/80 от Unisys были разработаны для работы с ассемблером формата IBM, поскольку эта серия машин была похожа на S/360 и S/370.
- Серия Fujitsu BS2000 также была создана как аналог 370 из того же источника, что и Univac, и до сих пор используется в некоторых частях Европы. [33]
- Dignus LLC Systems/ASM — это HLASM-совместимый ассемблер, который может работать как в системах IBM, так и в качестве кросс-ассемблера. [34]
- Бесплатная программа PC/370 , написанная Доном Хиггинсом, позже была куплена Micro Focus .
- z390 — ассемблер и эмулятор System 390, также написанный Доном Хиггинсом и запрограммированный на Java . Он имеет открытый исходный код и доступен на http://www.z390.org/.
- Университет штата Пенсильвания разработал пакет под названием ASSIST , который включает в себя ассемблер и интерпретатор System 370.
- Tachyon Software LLC продает рабочую среду Tachyon Assembler Workbench , которая работает на Windows, Linux/x86, Linux для S/390 и zSeries, AIX и Solaris. [35]
- GNU Assembler (gas) является частью коллекции компиляторов GNU (gcc) для Linux на OS/390 и IBM Z. Этот ассемблер имеет уникальный синтаксис, несовместимый с другими ассемблерами для архитектур IBM.
Важность
[ редактировать ]Первоначально все операционные системы System/360 были написаны на языке ассемблера, а все системные интерфейсы определялись макроопределениями. Доступ из языков высокого уровня (HLL) был ограничен тем, что предоставлял этот язык, а другие системные вызовы приходилось кодировать как подпрограммы ассемблера, вызываемые из программ HLL. Кроме того, IBM позволяла настраивать функции ОС путем установки с помощью так называемых выходов — предоставляемых пользователем процедур, которые могли расширять или изменять обычные функции ОС. Эти выходы должны были быть закодированы на языке ассемблера. Позже IBM перекодировала OS/360 на язык системного программирования PL/S , но, за исключением короткого испытания, решила не выпускать компилятор PL/S для пользователей. В результате этих факторов язык ассемблера на протяжении многих лет широко использовался в системах IBM.
См. также
[ редактировать ]- IBM Система/360
- Ассистент ассемблера
- IBM-совместимые мэйнфреймы на базе ПК — список совместимых машин или виртуальных машин
- Дизассемблер - обратный процесс сборки, восстанавливающий ассемблерный исходный код из машинного кода.
Примечания
[ редактировать ]- ^ IBM указывает целевые размеры своего программного обеспечения буквами
- Д 16 КиБ
- Е 32 Киб
- Ф 64 КиБ
- Г 128 КиБ
- H 256 КиБ
- Я 512 КиБ
- ^ Большинство вариантов использования BALR были заменены на
BASR
и подобные инструкции. - ^ Многие варианты использования
SVC
были замененыPC
инструкция. - ^ Перепрофилирование виртуальной машины
DIAG
какHVC
инструкция. - ^ HLASM выполнил требование SHARE, чтобы включить улучшения Грега Мушиала. [20] на Ассемблер H в поддерживаемый продукт.
- ^ Иждивенец
USING
тот, который задает перемещаемое выражение вместо списка регистров:USING IHADCB,SYSPRINT ... TM DCBOPTCD,DCBOPTC Test OPTCD in SYSPRINT ...
- ^ Маркированный
USING
это тот, который влияет только на инструкции, которые явно ссылаются на него, уточняя выражение меткой:LA R4,SYSIN LA R5,SYSPRINT IN USING IHADCB,R4 OUT USING IHADCB,R5 ... TM IN.DCBOFLGS,DCBOFTM Test OFLGS in SYSIN ... TM OUT.DCBOPTCD,DCBOPTC Test OPTCD in SYSPRINT ...
Ссылки
[ редактировать ]- ^ Например, см. Маккуиллен, Кевин (1975). Язык ассемблера (ОС) System/360–370 . Фресно, Калифорния: Майк Мурач и партнеры. п. 17. LCCN 74-29645 .
- ^ Например, Введение программиста в язык ассемблера IBM System/360 . Покипси, Нью-Йорк: Международная корпорация Business Machines. 1969.
- ^ Например, на шестой странице разворота «желтой карточки», помеченной как OS/VS, VM/370 и DOS/VS: «Справочная информация по System/370» (документ). Уайт-Плейнс, Нью-Йорк: Корпорация IBM. Ноябрь 1976 г. Издание четвертое.
- ^ Принципы работы IBM System/360 (PDF) . Справочная библиотека по системам IBM. Корпорация IBM. А22-6821-0 . Проверено 6 декабря 2018 г.
- ^ «HLASM — список всех кодов операций, расширенных мнемоник и кодов функций, отсортированных по мнемонике» . Проверено 14 января 2013 г.
- ^ «Базовая поддержка программирования IBM System/360» (PDF) . битсейверы . п. 61 . Проверено 6 сентября 2023 г.
- ^ Jump up to: а б Поддержка базового программирования IBM System/360 на базовом языке ассемблера (PDF) . Справочная библиотека по системам IBM. Корпорация IBM. Февраль 1965 г. C20-6503-0 . Проверено 5 апреля 2022 г.
- ^ Ассемблер спецификаций базового языка операционной системы IBM System/360 (диск/лента 16 КБ) (PDF) . Справочная библиотека по системам IBM. Корпорация IBM. Декабрь 1965 г. C24-3414-1 . Проверено 5 апреля 2022 г.
- ^ Корпорация IBM (1970). Язык ассемблера операционных систем для дисковых и ленточных систем IBM System/360 (PDF) .
- ^ IBM System/360 Operating System Assembler (32K) Руководство по логике программы (PDF) . ИБМ. 1966. И26-3598-0.
- ^ Ассемблер операционной системы IBM System/360 Disk [F] Логика программы (PDF) . ИБМ. 1968. И26-3716-0.
- ^ Логика программы на ассемблере операционной системы IBM System/360 (F) (PDF) . ИБМ. 1971. GY26-3700-2.
- ^ Язык ассемблера ОС, версия ОС 21 (PDF) . ИБМ. 1974. GC28-6514-9.
- ^ Корпорация IBM (1984). Блокнот по преобразованию MVS/расширенной архитектуры (PDF) .
- ^ Корпорация IBM (20 декабря 1996 г.). «5668-962 IBM Assembler H Версия 2 Выпуск 1.0» . Проверено 8 октября 2012 г.
- ^ Корпорация IBM (1973). Руководство программиста на ассемблере OS/VS (PDF) .
- ^ Корпорация IBM. «Функции IBM High Level Assembler and Toolkit — история выпусков» . Проверено 21 октября 2012 г.
- ^ Корпорация IBM (5 мая 1992 г.). «Анонсирующее письмо 292-244: IBM ВЫСОКИЙ УРОВЕНЬ АССЕМБЛЕРА/MVS, VM и VSE» . Проверено 21 октября 2012 г.
- ^ Корпорация IBM (2008 г.). Ассемблер высокого уровня для Linux в Руководстве пользователя zSeries (PDF) .
- ^ Грег Мушиал (20 июля 1983 г.), «Модуль 24: Усовершенствования SLAC и улучшения ассемблера IBM H-Level для версии 2.8» , НОУТБУК SLAC VM , Стэнфордский центр линейных ускорителей
- ^ «Путеводитель по коллекции Джона Р. Эрмана» . Интернет-архив Калифорнии . Х5621.2010. Архивировано из оригинала 15 октября 2022 г. Проверено 15 октября 2022 г. [1]
- ^ «IBM ВЫСОКИЙ УРОВЕНЬ АССЕМБЛЕРА/MVS & VM & VSE» . Информационные письма . Корпорация IBM. 5 мая 1992 г. 292-244 . Проверено 8 октября 2012 г.
- ^ Презентация IBM High Level Assembler для MVS, VM и VSE Release 2 (PDF) . Красные книги. ИБМ . Декабрь 1995 г. SG24-3910-01. Архивировано из оригинала (PDF) 23 января 2016 г. Проверено 29 сентября 2023 г.
- ^ Корпорация IBM. «Компоненты Toolkit Feature» . ИБМ . Проверено 5 сентября 2023 г.
- ^ Пакет поддержки IBM 7090/7094 для IBM System/360 (PDF) . Справочная библиотека по системам IBM. Корпорация IBM. Ноябрь 1964 г. C28-6501-2 . Проверено 5 апреля 2022 г.
- ^ Jump up to: а б Корпорация IBM (апрель 1970 г.). Язык ассемблера систем программирования дисковых и ленточных систем IBM System/360 Model 20 (PDF) . Проверено 2 октября 2023 г.
- ^ Jump up to: а б Корпорация IBM (май 1969 г.). Поддержка программирования карт IBM System/360 Model 20 на базовом языке ассемблера (PDF) . Проверено 2 октября 2023 г.
- ^ Корпорация IBM (1966). Язык ассемблера системы программирования IBM System/360 Model 44 (PDF) . п. 73 . Проверено 2 июля 2019 г.
- ^ Jump up to: а б Корпорация IBM (1966). Язык ассемблера системы программирования IBM System/360 Model 44 (PDF) .
- ^ Корпорация IBM (1976). Руководство программиста по ассемблеру IBM Time Sharing System (PDF) .
- ^ Стэнфордский центр линейных ускорителей. «ОБЩЕЕ ИЗМЕРЕНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ IBM System 360 (SLAC-PUB-715)» (PDF) . Проверено 8 октября 2012 г.
- ^ Алкок, Дэвид. «Часто задаваемые вопросы по ассемблеру z/Architecture Дэйва» . Планета МВС . Проверено 15 декабря 2012 г.
- ^ Руководства Fujitsu ASEMH доступны по адресу http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (Проверено 27 февраля 2016 г.).
- ^ Дигнус, ООО. «Системы/АСМ» . Проверено 15 декабря 2012 г.
- ^ ООО «Тахион Софтвер». «Тахионное программное обеспечение» . Проверено 15 декабря 2012 г.
Внешние ссылки
[ редактировать ]- Руководство по ассемблеру IBM высокого уровня
- Введение программиста в язык ассемблера IBM System/360 (текст для студентов)
- Справочник по ассемблеру высокого уровня для z/OS, z/VM и z/VSE
- Щепетильный программист: сборщик мейнфреймов IBM
- Базовое программирование на языке ассемблера для мэйнфреймов IBM
- Введение в программирование на ассемблере OS / 390 (в архиве)
- Компилятор IBM Assembler F с поддержкой Интернета для небольших экспериментов
- ASSIST — система ассемблера для обучения студентов и системного обучения