Современные IBM-совместимые компьютеры довольно сложны; при их реализации используется множество самых разнообразных принципов и технологий. Поэтому для понимания даже наиболее простых идей их работы требуется знание достаточно большого количества технических деталей.
Альтернативным способом изучения является метод моделирования. Его главная идея состоит в том, чтобы выявить все наиболее важные черты моделируемого объекта и отразить их в модели. Таким образом, модель оказывается «очищенной» от всех второстепенных деталей, зато в главном ведет себя также как и изучаемый объект. Очевидно, что изучение модели легче и, в то же время, позволяет отчетливо выделить все наиболее существенные черты.
Воспользуемся для знакомства с принципами выполнения программ некоторой простой моделью современного компьютера. Наша модель будет состоять из процессора и оперативной памяти; устройства ввода/вывода для простоты рассматривать не будем.
Процессор в такой модели выполняет наиболее простые операции (в основном арифметические). В его состав входят 4 регистра общего назначения R0-R3, а также программный счетчик PC (Program Counter).
|
|
Программа вычислений хранится в небольшом ОЗУ размером 256 байт, пронумерованных в шестнадцатеричной системе от 0 до FF.
Любая команда нашего процессора состоит из трех частей:
· кода операции (КОП), образующегося из 8 двоичных разрядов (или 2 шестнадцатеричных цифр), и определяющего, какую именно операцию необходимо выполнить над данными;
· двух операндов (ОП1 и ОП2), каждый из одной шестнадцатеричной цифры, кодирующей, где взять данные.
Наш учебный процессор имеет следующую систему команд:
КОП | ОП1 | ОП2 | ПОЯСНЕНИЯ |
нет операции | |||
X | X | оп1 ==> оп2 | |
X | X | оп2 + оп1 ==> оп2 | |
X | X | оп2 — оп1 ==> оп2 | |
X | X | оп2 * оп1 ==> оп2 | |
X | X | оп2 / оп1 ==> оп2 (деление нацело) | |
0F | останов |
В приведенной выше таблице вместо операндов, обозначенных символом X, можно подставить номер одного из регистров процессора от 0 до 3. В некоторых случаях может использоваться код D («данные»), который говорит о том, что операндом является число, расположенное в следующем слове команды.
Как нетрудно заметить, каждая команда состоит из 4 шестнадцатеричных цифр, т.е. из двух байт. В отдельных случаях, когда указан код операнда D, длина команды увеличивается вдвое. Приведем примеры команд, которые должны существенно облегчить понимание сказанного выше о структуре команд.
Код команды | Содержание | Комментарии |
R1 ==> R2 | значение из регистра R1 копируем в R2 | |
R3 ==> R0 | значение из R3 копируем в R0 | |
01D2 0003 | 3 ==> R2 | в регистр R2 заносится константа 3, которая следует за командой |
R2 + R1 ==> R2 | сложить числа, находящиеся в указанных регистрах, и записать результат во второй из них | |
02D2 0001 | R2 + 1 ==> R2 | увеличить R2 на1 |
R2 — R1 ==> R2 | из R2 вычесть R1, и записать результат в R2 | |
02D2 0001 | R2 — 1 ==> R2 | уменьшить R2 на1 |
0F00 | стоп | прекратить выполнение программы |
|
|