Упрощенный учебный компьютер
Упрощенный учебный компьютер (сокращенно SIC) — это гипотетическая компьютерная система, представленная в книге «Системное программное обеспечение: введение в системное программирование » Леланда Бека. Из-за того, что большинство современных микропроцессоров включают в себя тонкие и сложные функции в целях повышения эффективности, может быть сложно изучить системное программирование с использованием реальной системы. Упрощенный учебный компьютер решает эту проблему, абстрагируя это сложное поведение в пользу архитектуры, которая понятна и доступна для тех, кто хочет изучить системное программирование.
НИЦ Архитектура
[ редактировать ]Машина SIC имеет базовую адресацию, сохраняя большинство адресов памяти в шестнадцатеричном целочисленном формате. Подобно большинству современных вычислительных систем, архитектура SIC хранит все данные в двоичном виде и использует дополнение до двух для представления отрицательных значений на машинном уровне. Память в SIC состоит из 8-битных байтов, и все адреса памяти в SIC являются байтовыми адресами. Любые три последовательных байта образуют 24-битное значение «слова», адресуемое по местоположению байта с наименьшим номером в значении слова. Числовые значения сохраняются в виде словесных значений, а символьные значения используют 8-битную систему ASCII . Машина SIC не поддерживает аппаратное обеспечение с плавающей запятой и имеет не более 32 768 байт памяти. Существует также более сложная машина, построенная на основе SIC, называемая компьютером с упрощенными инструкциями и дополнительным оборудованием (SIC/XE). Расширение SIC XE добавляет 48-битный тип данных с плавающей запятой, дополнительный режим адресации памяти и дополнительную память (1 мегабайт вместо 32 768 байт) к исходной машине. Весь ассемблерный код SIC совместим с SIC/XE снизу вверх.
Машины SIC имеют несколько регистров длиной 24 бита, имеющих как числовое, так и символьное представление:
- A (0) : используется для основных арифметических операций; известный как аккумуляторный регистр.
- X (1) : Сохраняет и вычисляет адреса; известный как индексный регистр.
- L (2) : используется для перехода к определенным адресам памяти и сохранения адресов возврата; известный как регистр связи.
- PC (8) : Содержит адрес следующей команды для выполнения; известный как регистр счетчика программ.
- SW (9) : Содержит различную информацию, такую как флаги переноса или переполнения; известный как регистр слова состояния.
В дополнение к стандартным регистрам SIC есть также четыре дополнительных регистра общего назначения, специфичных для машины SIC/XE:
- B (3) : Используется для адресации; известный как базовый регистр.
- S (4) : Регистр общего назначения, не предназначен для специального использования.
- T (5) : Регистр общего назначения, не предназначен для специального использования.
- F (6) : Регистр аккумулятора с плавающей запятой (этот регистр 48-битный вместо 24).
Эти пять/девять регистров позволяют машине SIC или SIC/XE выполнять самые простые задачи на специальном языке ассемблера. В книге «Системное программное обеспечение» это используется с теоретическим рядом кодов операций, чтобы помочь понять ассемблеры и компоновщики-загрузчики, необходимые для выполнения кода языка ассемблера .
Режимы адресации для SIC и SIC/XE
[ редактировать ]Компьютер с упрощенными инструкциями имеет три формата инструкций, а надстройка «Дополнительное оборудование» включает четвертый. Форматы инструкций обеспечивают модель управления памятью и данными. Каждый формат имеет свое представление в памяти:
- Формат 1 : Состоит из 8 бит выделенной памяти для хранения инструкций.
- Формат 2 : Состоит из 16 бит выделенной памяти для хранения 8 бит инструкций и двух 4-битных сегментов для хранения операндов.
- Формат 3 : Состоит из 6 бит для хранения инструкций, 6 бит значений флагов и 12 бит смещения.
- Формат 4 : действителен только на машинах SIC/XE, состоит из тех же элементов, что и формат 3, но вместо 12-битного смещения хранит 20-битный адрес.
И формат 3, и формат 4 содержат шестибитовые значения флагов, состоящие из следующих битов флага:
- n : Флаг косвенной адресации.
- i : Флаг немедленной адресации
- x : флаг индексированной адресации.
- b : Флаг относительно базового адреса
- p : Флаг противоположности программы
- e : Флаг инструкции формата 4.
Режимы адресации для SIC/XE
[ редактировать ]- Правило 1:
- е = 0: формат 3
- е = 1: формат 4
- формат 3:
- b = 1, p = 0 (относительно основания)
- b = 0, p = 1 (относительно ПК)
- b = 0, p = 0 (прямая адресация)
- формат 4:
- b = 0, p = 0 (прямая адресация)
- х = 1 (индекс)
- я = 1, n = 0 (немедленно)
- я = 0, n = 1 (косвенный)
- я = 0, n = 0 (SIC)
- i = 1, n = 1 (SIC/XE для совместимости с SIC)
- Правило 2:
- я = 0, n = 0 (SIC)
- b, p, e — часть адреса.
Синтаксис сборки SIC
[ редактировать ]SIC использует специальный язык ассемблера со своими собственными кодами операций, которые содержат шестнадцатеричные значения, необходимые для сборки и выполнения программ. Ниже приведен пример программы, чтобы получить представление о том, как может выглядеть программа SIC. В приведенном ниже коде есть три столбца. Первый столбец представляет пересылаемый символ, который сохранит свое местоположение в памяти. Второй столбец обозначает либо инструкцию SIC (код операции), либо постоянное значение (BYTE или WORD). Третий столбец принимает значение символа, полученное при просмотре первого столбца, и использует его для выполнения операции, указанной во втором столбце. Этот процесс создает объектный код, и все объектные коды помещаются в объектный файл для запуска на машине SIC.
COPY START 1000
FIRST STL RETADR
CLOOP JSUB RDREC
LDA LENGTH
COMP ZERO
JEQ ENDFIL
JSUB WRREC
J CLOOP
ENDFIL LDA EOF
STA BUFFER
LDA THREE
STA LENGTH
JSUB WRREC
LDL RETADR
RSUB
EOF BYTE C'EOF'
THREE WORD 3
ZERO WORD 0
RETADR RESW 1
LENGTH RESW 1
BUFFER RESB 4096
.
. SUBROUTINE TO READ RECORD INTO BUFFER
.
RDREC LDX ZERO
LDA ZERO
RLOOP TD INPUT
JEQ RLOOP
RD INPUT
COMP ZERO
JEQ EXIT
STCH BUFFER,X
TIX MAXLEN
JLT RLOOP
EXIT STX LENGTH
RSUB
INPUT BYTE X'F1'
MAXLEN WORD 4096
.
. SUBROUTINE TO WRITE RECORD FROM BUFFER
.
WRREC LDX ZERO
WLOOP TD OUTPUT
JEQ WLOOP
LDCH BUFFER,X
WD OUTPUT
TIX LENGTH
JLT WLOOP
RSUB
OUTPUT BYTE X'06'
END FIRST
Если бы вы собрали эту программу, вы бы получили объектный код, изображенный ниже. Начало каждой строки состоит из типа записи и шестнадцатеричных значений ячеек памяти. Например, верхняя строка представляет собой запись «H», первые 6 шестнадцатеричных цифр обозначают ее относительное начальное местоположение, а последние 6 шестнадцатеричных цифр представляют размер программы. Строки повсюду одинаковы: каждая запись «T» состоит из 6 шестнадцатеричных цифр, обозначающих начальное местоположение этой строки, двух шестнадцатеричных цифр, обозначающих размер (в байтах) строки, и объектных кодов, которые были созданы в процессе сборки. .
HCOPY 00100000107A
T0010001E1410334820390010362810303010154820613C100300102A0C103900102D
T00101E150C10364820610810334C0000454F46000003000000
T0020391E041030001030E0205D30203FD8205D2810303020575490392C205E38203F
T0020571C1010364C0000F1001000041030E02079302064509039DC20792C1036
T002073073820644C000006
E001000
Пример программы
[ редактировать ]Ниже представлена программа, иллюстрирующая перемещение данных в SIC.
LDA FIVE
STA ALPHA
LDCH CHARZ
STCH C1
ALPHA RESW 1
FIVE WORD 5
CHARZ BYTE C'Z'
C1 RESB 1
Эмуляция системы SIC
[ редактировать ]Поскольку машины SIC и SIC/XE не являются настоящими машинами, задача создания эмулятора SIC часто является частью курсовой работы на уроках системного программирования. Цель SIC — научить системных программистов начального уровня или студентов университетов писать и ассемблировать код на языках более высокого уровня, таких как C и C++. При этом в сети есть несколько источников программ, имитирующих SIC, хотя они и нечасты.
- Ассемблер и симулятор, написанные автором Леландом на языке Паскаль, доступны на его образовательной домашней странице по адресу ftp://rohan.sdsu.edu/faculty/beck. [ постоянная мертвая ссылка ]
- SIC/XE Simulator And Assembler можно загрузить по адресу https://sites.google.com/site/sarimohsultan/Projects/sic-xe-simulator-and-assembler. [ мертвая ссылка ]
- Эмулятор SIC, ассемблер и некоторые примеры программ, написанных для SIC, можно загрузить по адресу http://sicvm.sourceforge.net/home.php.
- SicTools — виртуальная машина, симулятор, ассемблер и компоновщик для компьютера SIC/XE, доступные по адресу https://jurem.github.io/SicTools/.
См. также
[ редактировать ]- Компьютер
- СМЕШИВАНИЕ
- Системное программное обеспечение
- Язык ассемблера
- Регистр процессора
- Виртуальная машина
Ссылки
[ редактировать ]- Бек, Лиланд (1996), Системное программное обеспечение: введение в системное программирование (3-е изд.), Аддисон-Уэсли, ISBN 0-201-42300-6
- Информация о системах SIC и SIC/XE: https://web.archive.org/web/20121114101742/http://www-rohan.sdsu.edu/~stremler/2003_CS530/SicArchitecture.html .
- Список инструкций SIC и SIC/XE: http://teaching.yfolajimi.com/uploads/3/5/6/9/3569427/_sp04.ppt
- Краткая информация об адресации памяти: http://www.unf.edu/~cwinton/html/cop3601/s10/class.notes/basic4-SICfmts.pdf.
- Адресация режима SIC/XE: http://uhost.rmutp.ac.th/wanapun.w/--j--/ch2-2.pdf [ постоянная мертвая ссылка ]
Внешние ссылки
[ редактировать ]- SICvm — виртуальная машина на основе упрощенного учебного компьютера (SIC).