12:04
Простая VM-16 LC3 — Лисья нора
§ Система инструкции
Код операции Мнем Краткое описание 0000 NZPi iiii iiii | BR | Условный переход (9 битное смещение) 0001 DDDA AA00 0BBB | ADD | Сложение регистр-регистр D = A + B 0001 DDDS SS1i iiii | ADD | Сложение регистр-значение D = S + i 0010 DDDi iiii iiii | LD | Загрузка значения из RPC + offset 0011 SSSi iiii iiii | ST | Сохранение в RPC + Offset 0100 1iii iiii iiii | JSR | Вызов процедуры Offset11 0100 000B BB00 0000 | JSR | Вызов процедуры Base Reg 0101 DDDS SS00 0sss | AND | Регистр-регистр D = S & s 0101 DDDS SS1i iiii | AND | Регистр-значение D = S & i 0110 0000 0000 0000 | LDR | Загрузка значения из BaseReg + Offset 0111 DDDB BBii iiii | STR | Сохранение в BaseReg + Offset 1000 0000 0000 000 | RTI | [не реализовано] возврат из прерывания 1001 DDDS SS11 1111 | NOT | Логическое отрицание битов (complement) 1010 DDDi iiii iiii | LDI | Загрузка косвенного значения по RPC + Offset 1011 SSSi iiii iiii | STI | Сохранение по косвенному адресу 1100 000B BB00 0000 | JMP | Переход по регистру или адресу 1101 0000 0000 0000 | --- | Не используется 1110 DDDi iiii iiii | LEA | Загрузка эффективного адреса 1111 0000 iiii iiii | TRAP | Системный вызов [0..255]
§ Системные вызовы
Вызывается через TRAP #vector0 tgetc Чтение символа с клавиатуры в R0 1 tout Вывод символа из R0 в консоль 2 tputs Печать строки, начиная с R0 и заканчивая на \x00 3 tin Чтение символа с клавиатуры в R0 с выдачей в консоль 4 tputsp -- не реализовано -- используется для выдачи символа 5 thalt Остановка исполнения программ 6 tinu16 Чтение целочисленного значения с клавиатуры и сохранение в R0 7 toutu16 Печать целочисленного R0 в консоль