VaninVM/AssemblerVVM
2015-02-16 18:26:06 +08:00
..
Program.cs Minor changes: more comments, changed pattern for constant matching 2015-02-16 18:26:06 +08:00
readme.txt Simple Assembler for VaninVM. Wrote on C#. Short tutor in readme.txt 2014-01-29 21:42:03 +04:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

VVM Assembler.
Описание.

Параметром утилите подается текстовый файл с ассемблерными инструкциями для VVM.


Код разивается на блоки:
-Один константный блок
-Переменное количество процедурных блоков с кодом.

Блоки могут идти в любом порядке, но они не должны быть вложенными или пересекающимися.
Каждая инструкция или информация о блоке должна начинаться с новой строки.
Константный блок начинается с препроцессорной инструкции .data и заканчивается .endd
Внутри константного строки располагаются так:
signature "string"

Пример:
.data
str1 "Hello World!"
str2 "Second String!"
.endd

Процедурные блоки начинаются с препроцессорной инструкции
.proc name [num_of_locals] [num_of_args]
и заканчиваются на .endp

Пример:

.proc main
DLOAD1
DPRINT
STOP
.endp

Стартовая процедура носит имя main . 

Реализована поддержка меток. Метка должна находится на отдельной строке и выглядит так
name:

Пример:

.data
src2 "Done"
.endd

.proc main
ILOAD0
ILOAD -3
again:
CALL inc
IFICMPNE again
SLOAD src2
SPRINT
STOP
.endp

.proc inc
ILOAD1
IADD
RETURN
.endp