Skip to content

Teimir/DML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание синтаксиса инструкций ISA Fasm

Общие сведения:

Данный транслятор представляет все инструкции "как есть", без каких-либо оберток. При создании сохранялись основные признаки синтаксиса FASM. Инструкции бывают безоперандовыми, однооперандовыми(инструкции UART), двухоперандовыми и трехоперандовыми.

Регистр 31 является указателем инструкций.

Список доступных инструкций:

  • nop - пустая инструкция 0 оп
  • hlt - конец программы 0 оп
  • sets - задать скорость UART 1 оп
  • ins - поучить инфорацию UART 1 оп
  • in - прочитать с UART 1 оп
  • out - отправить на UART 1 оп
  • mov - копирование данных 2 оп
  • shr - сдвиг вправо на 1 2 оп
  • shl - сдвиг влево на 1 2 оп
  • lds - загрузка из памяти 2 оп
  • not - логическое "не" 2 оп
  • add - сложение 3 оп
  • sub - вычитание 3 оп
  • and - логическое "и" 3 оп
  • or - логическое "или" 3 оп
  • xor - исключающее "или" 3 оп
  • cmpa- op1 = op2 > op3 ? -1 : 0 3 оп
  • cmpe- op1 = op2 == op3 ? -1 : 0 3 оп
  • cmpb- op1 = op2 < op3 ? -1 : 0 3 оп
  • jnz - op1 = op2 == -1 ? op3 : op1 3 оп
  • jz - op1 = op2 == 0 ? op3 : op1 3 оп

Все инструкции(кроме lds) имеют следующий общий синтаксис:

instr op1, op2, op3

Где:

  1. op1 - назначение, может быть только регистром (r:n)
  2. op2 - может быть регистром или литералом, если op2 - литерал, то op3 не существует. Тогда op2 - длинный литерал (20 бит)
  3. op3 - существует только если op2 регистр. Можеть быть регистром или коротким литералом (15 бит). Количество операндов для каждой инструкции см. список инструкций. Синтаксис lds: Lds имеет два варианта:
  4. Загрузка в память по адресу в регистре lds [r:n], r:n
  5. Загрузка из памяти по адресу в регистре lds r:n, [r:n]

Программа имеет следующий формат:

format binary

include "ISA.inc"		;полный путь к ISA.inc, если программа в другой папке
...						;инструкции

Для компиляции и получения файла формата .mif используется bat-файл makeMif.bat.

Ему в качестве аргумента командной строки передается адрес файла с программой без расширения (расширение должно быть .asm). В папке с программой он создаст файлы формата .bin с инструкциями в двоичном виде и файл формата .mif для Quartus. Исходный код транслятора и exe-шник прилагаются в виде mif_converter.asm и mif_converter.exe

Пакет DML добавляет:

  1. Увеличенное количество макросов
  2. Авто сборку
  3. Циклы
  4. Условные операторы

При компиляции с использованием main.py пакет активируется автоматически

About

Darkness Macros Language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published