Основные регистры Mic-1
Материал из Вики ИТ мехмата ЮФУ
- SP — адрес вершины стека в памяти;
- TOS — значение вершины стека; то есть это значение хранится как в TOS, для удобства, так и в памяти по адресу SP; таким образом, при изменении вершины стека результат должен записывать как в TOS, так и в память по адресу SP;
- MAR — адрес в памяти, по которому следует сделать команду чтения (rd) или записи (wr); таким образом, при каждом чтении/записи следует предварительно заполнить MAR; самые частые случаи — когда требуется 1) записать новое значение вершины стека, тогда в MAR нужно записать SP, 2) прочитать слово ниже вершины стека, тогда в MAR следует записать SP - 1 (это же значение обычно следует записать и в SP, чтобы «вытолкнуть» из стека старую вершину);
- MDR — значение, которое следует записать в память или прочитать из памяти; если выполняется чтение, то прочитанное по адресу MAR значение появится в MDR только через полный цикл, то есть только через одну микрокоманду после того, как было запрошено wr; на следующем же после wr цикле ещё доступно старое значение MDR; такое поведение нужно учитывать, когда выполняется серия чтений из памяти (несколько команд wr по разным адресам);
- H — сюда помещается левый операнд АЛУ для любой бинарной операции; учтите, что увеличение или уменьшение на 1 является унарной операцией и может быть выполнено без использования H;
- PC — адрес следующей инструкции или её операнда; практически всегда изменяется последовательно, увеличением на 1; для однобайтовых инструкций IJVM увеличение PC происходит в начале обработки инструкции стандартной микрокомандой Main1 и больше не требуется;
- MBR — значение следующей инструкции или первого байта операнда текущей инструкции.