Данный репозиторий содержит программу ассемблера и ISA для архитектуры CYBERcobra 3000 Pro 2.1.
Набор команд схож с набором rv32i
addrd,rs1,rs2subrd,rs1,rs2xorrd,rs1,rs2orrd,rs1,rs2andrd,rs1,rs2srard,rs1,rs2sllrd,rs1,rs2srlrd,rs1,rs2sltsrd,rs1,rs2slturd,rs1,rs2bltrs1,rs2,immblturs1,rs2,immbgers1,rs2,immbgeurs1,rs2,immbeqrs1,rs2,immbners1,rs2,immlird,immjimminrd— Загрузка в регистрrdданных с внешнего устройства.out— Вывод данных на внешнее устройство. Является псевдоинструкцией для инструкцииaddx0,x1,x0
Транслирует язык ассемблера обсуждаемой архитектуры в машинные коды киберкобры.
- Внешние зависимости:
- CatchV3 — нужен только для сборки тестов. Исполняемые файл можно собрать и без него.
- Система сборки — meson.
Программа взаимодействует со средой через дескрипторы stdin, stdout, stderr. Таким образом можно использовать средства ОС для перенаправления соответствующих потоков.
На вход принимается текстовый файл, написанный на языке ассемблера, на выход поступает текстовый файл с транслированными машинными инструкциями записанными в шестнадцатеричной системе счисления. Если во входном тексте обнаружена ошибка, то программа сообщит об этом через соответствующий дескриптор ошибки.
Пример ассемблирования файла program.s с записью результата в program.mem в powershell:
Get-Content .\test\program.s | .\build\cybercobra_assembler.exe > .\build\program.mem-
Поддерживаются все инструкции из ISA.
-
Каждая инструкция должна быть на отдельной строке.
-
Регистровые операнды записываются в виде:
x0-x31, аimmоперанды в виде знаковых десятичных чисел. -
Пробельные символы игнорируются.
-
Поддерживаются однострочные комментарии (игнорируются).
add x1, x2, x3 # x1 = x2 + x3 -
Поддерживаются метки.
start: j start
Пример программы на языке можно найти здесь.