61 lines
No EOL
1 KiB
Text
61 lines
No EOL
1 KiB
Text
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 |