Skip to content

BROsandr/cybercobra_assembler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CYBERcobra assembler

Данный репозиторий содержит программу ассемблера и ISA для архитектуры CYBERcobra 3000 Pro 2.1.

ISA

Набор команд схож с набором rv32i

  1. add rd , rs1, rs2
  2. sub rd , rs1, rs2
  3. xor rd , rs1, rs2
  4. or rd , rs1, rs2
  5. and rd , rs1, rs2
  6. sra rd , rs1, rs2
  7. sll rd , rs1, rs2
  8. srl rd , rs1, rs2
  9. slts rd , rs1, rs2
  10. sltu rd , rs1, rs2
  11. blt rs1, rs2, imm
  12. bltu rs1, rs2, imm
  13. bge rs1, rs2, imm
  14. bgeu rs1, rs2, imm
  15. beq rs1, rs2, imm
  16. bne rs1, rs2, imm
  17. li rd , imm
  18. j imm
  19. in rd — Загрузка в регистр rd данных с внешнего устройства.
  20. out — Вывод данных на внешнее устройство. Является псевдоинструкцией для инструкции add x0, x1, x0

Ассемблер

Транслирует язык ассемблера обсуждаемой архитектуры в машинные коды киберкобры.

Сборка программы

  • Внешние зависимости:
    • CatchV3 — нужен только для сборки тестов. Исполняемые файл можно собрать и без него.
  • Система сборки — meson.

Запуск программы

Программа взаимодействует со средой через дескрипторы stdin, stdout, stderr. Таким образом можно использовать средства ОС для перенаправления соответствующих потоков.

На вход принимается текстовый файл, написанный на языке ассемблера, на выход поступает текстовый файл с транслированными машинными инструкциями записанными в шестнадцатеричной системе счисления. Если во входном тексте обнаружена ошибка, то программа сообщит об этом через соответствующий дескриптор ошибки.

Пример ассемблирования файла program.s с записью результата в program.mem в powershell:

Get-Content .\test\program.s | .\build\cybercobra_assembler.exe > .\build\program.mem

Язык ассемблера

  1. Поддерживаются все инструкции из ISA.

  2. Каждая инструкция должна быть на отдельной строке.

  3. Регистровые операнды записываются в виде: x0-x31, а imm операнды в виде знаковых десятичных чисел.

  4. Пробельные символы игнорируются.

  5. Поддерживаются однострочные комментарии (игнорируются).

    add x1, x2, x3 # x1 = x2 + x3
    
  6. Поддерживаются метки.

    start:
      j start
    

Пример программы на языке можно найти здесь.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published