Упрощенный учебный компьютер - Simplified Instructional Computer

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

SIC Архитектура

Машина SIC имеет базовую адресацию, сохраняя большинство адресов памяти в шестнадцатеричном целочисленном формате. Подобно большинству современных вычислительных систем, архитектура SIC хранит все данные в двоичном формате и использует два дополнения для представления отрицательных значений на машинном уровне. Память в SIC состоит из 8-битных байтов, и все адреса памяти в SIC являются байтовыми адресами. Любые три последовательных байта образуют 24-битное значение «слова», адресуемое байтом с наименьшим номером в значении слова. Числовые значения сохраняются как значения слов, а символьные значения используют 8-битный ASCII система. Машина SIC не поддерживает оборудование с плавающей запятой и имеет не более 32 768 байт памяти. Существует также более сложная машина, построенная на основе SIC, которая называется Компьютер с упрощенными инструкциями и дополнительным оборудованием (SIC / XE). Расширение XE для SIC добавляет 48-битный тип данных с плавающей запятой, дополнительный режим адресации памяти и дополнительную память (1 мегабайт вместо 32 768 байт) к исходной машине. Весь ассемблерный код SIC обратно совместим с SIC / XE.

Машины SIC имеют несколько регистров, каждый длиной 24 бита и имеющих как числовое, так и символьное представление:

  • А (0): Используется для основных арифметических операций; известный как регистр аккумулятора.
  • Х (1): Сохраняет и вычисляет адреса; известный как индексный регистр.
  • L (2): Используется для перехода к определенным адресам памяти и сохранения адресов возврата; известный как регистр связей.
  • ПК (8): Содержит адрес следующей инструкции для выполнения; известный как регистр счетчика программ.
  • SW (9): Содержит различную информацию, например флаги переноса или переполнения; известный как регистр слова состояния.

В дополнение к стандартным регистрам SIC, есть еще четыре дополнительных регистра общего назначения, специфичных для машины SIC / XE:

  • В (3): Используется для адресации; известный как базовый регистр.
  • S (4): Нет специального использования, регистр общего назначения.
  • Т (5): Нет специального использования, регистр общего назначения.
  • Ж (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 имеют в себе шестибитные значения флага, состоящие из следующих битов флага:

  • п: Флаг косвенной адресации
  • я: Флаг немедленной адресации
  • Икс: Флаг индексированной адресации
  • б: Флаг относительно базового адреса
  • п: Программный контр-относительный флаг
  • е: Флаг инструкции формата 4

Режимы адресации для SIC / XE

  • Правило 1:
    e = 0: формат 3
    e = 1: формат 4
    • формат 3:
      b = 1, p = 0 (базовый относительный)
      b = 0, p = 1 (отн. шт.)
      b = 0, p = 0 (прямая адресация)
    • формат 4:
      b = 0, p = 0 (прямая адресация)
      x = 1 (индекс)
      i = 1, n = 0 (сразу)
      i = 0, n = 1 (косвенный)
      я = 0, п = 0 (SIC)
      i = 1, n = 1 (совместимость с SIC / XE для SIC)
  • Правило 2:
    я = 0, п = 0 (SIC)
    b, p, e - часть адреса.

Синтаксис сборки SIC

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

      COPY START 1000
ПЕРВЫЙ STL RETADR
CLOOP JSUB RDREC
ДЛИНА LDA
КОМП ZERO
JEQ ENDFIL
JSUB WRREC
J CLOOP
ENDFIL LDA EOF
СТА-БУФЕР
LDA THREE
ДЛИНА STA
JSUB WRREC
LDL RETADR
RSUB
EOF BYTE C'EOF '
ТРИ СЛОВА 3
НУЛЕВОЕ СЛОВО 0
RETADR RESW 1
ДЛИНА RESW 1
БУФЕР RESB 4096
.
. ПОДПРОГРАММА ДЛЯ ЧТЕНИЯ ЗАПИСИ В БУФЕР
.
RDREC LDX ZERO
LDA ZERO
ВХОД RLOOP TD
JEQ RLOOP
RD ВВОД
КОМП ZERO
JEQ EXIT
STCH БУФЕР, X
ТИКС МАКСЛЕН
JLT RLOOP
ВЫХОД ДЛИНА STX
RSUB
ВХОДНОЙ БАЙТ X'F1 '
МАКСЛЕН СЛОВО 4096
.
. ПОДПРОГРАММА ДЛЯ ЗАПИСИ ЗАПИСИ ИЗ БУФЕРА
.
WRREC LDX ZERO
ВЫХОД WLOOP TD
JEQ WLOOP
ЛДЧ БУФЕР, X
ВЫХОД WD
ДЛИНА TIX
JLT WLOOP
RSUB
ВЫХОДНОЙ БАЙТ X'06 '
КОНЕЦ ПЕРВЫЙ

Если бы вы собрали эту программу, вы бы получили объектный код, изображенный ниже. Начало каждой строки состоит из типа записи и шестнадцатеричных значений ячеек памяти. Например, верхняя строка представляет собой запись «H», первые 6 шестнадцатеричных цифр обозначают ее относительное начальное местоположение, а последние 6 шестнадцатеричных цифр представляют размер программы. Строки на всем протяжении похожи, каждая запись 'T' состоит из 6 шестнадцатеричных цифр, обозначающих начальное положение этой строки, 2 шестнадцатеричных цифр для обозначения размера (в байтах) строки и кодов объектов, которые были созданы в процессе сборки. .

      HCOPY 00100000107A T0010001E1410334820390010362810303010154820613C100300102A0C103900102D T00101E150C10364820610810334C0000454F46000003000000 T0020391E041030001030E0205D30203FD8205D2810303020575490392C205E38203F T0020571C1010364C0000F1001000041030E02079302064509039DC20792C1036 T002073073820644C000006 E001000

Пример программы

Ниже приведена программа, иллюстрирующая перемещение данных в SIC.

LDA FIVE
СТА АЛЬФА
LDCH CHARZ
STCH C1

АЛЬФА RESW 1
ПЯТЬ СЛОВ 5
CHARZ BYTE C'Z '
C1 RESB 1

Эмуляция системы SIC

Поскольку машины SIC и SIC / XE не являются настоящими машинами, задача фактического построения эмулятора SIC часто является частью курсовой работы в классе системного программирования. Цель SIC - научить системных программистов начального уровня или студентов, как писать и собирать код на языках более высокого уровня, таких как C и C ++. При этом в сети есть несколько источников программ-эмуляторов SIC, какими бы редкими они ни были.


Смотрите также

Рекомендации

  • Бек, Лиланд (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://solomon.ipv6.club.tw/~solomon/Course/SP.941/sic-instruction.html
  • Краткая информация об адресации памяти: 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)