Jump to content

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

Упрощенный учебный компьютер (сокращенно 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, хотя они и нечасты.

См. также

[ редактировать ]
  • Бек, Лиланд (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).
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 63eb1657bd36a7cd1ed3adf5019fb19d__1720514940
URL1:https://arc.ask3.ru/arc/aa/63/9d/63eb1657bd36a7cd1ed3adf5019fb19d.html
Заголовок, (Title) документа по адресу, URL1:
Simplified Instructional Computer - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)