СРОЧНО НУЖНА ПОМОЩЬ!

  • Автор темы katerina99
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

katerina99

Гость
#1
Протяните руку помощи...=)Кто возьмётся написать интерпретатор произвольного ассемблера с неким набором команд...Разумеется не бесплатно!!!Крайний срок-середина августа!!!

В качестве разбора представлена программа нахождения НОД:

ldc 27
st 1

ldc 36
st 2

;comment 1
continue: ld 1
ld 2
sub

br body ;comment 2
jmp exiti


body:

ld 1
ld 2
cmp

;comment 3

ldc 1
add

br elsei

ld 2
ld 1
sub
st 1

jmp continue ;continue!

elsei:

ld 1
ld 2
sub
st 2

jmp continue

exiti:

Основное

1) Имеется "память" - массив интов. Соответственно номер элемента в массиве - "адрес" памяти
2) Имеется стек для работы с ним. На него нужно уметь загружать число(инт) наверх и снимать верхнее число.

Опсисание языка:

==============>комманды<==============

ldс <arg> положить аргумент arg(инт) на стек
st <address> записать верхний элемент стека по адресу address памяти. Стереть со стека этот элемент
ld <address> взять элемент с адреса памяти address и положить его на стек. Стереть со стека этот элемент
add снять со стека два верхних элемента, сложить и результат положить на стек
sub снять со стека два верхних элемента, вычесть и результат положить на стек (у меня реализовано как вычитание из первого снятого элемента второй снятый элемент)
cmp снимает со стека два верхних числа и сравнивает их. Если первый больше второго, на стек кладется 1, если равны 0, иначе -1
rec конец программы(это я вообще у себя не использую)
jmp <mark> безусловный переход по метке mark
br <mark> условный переход. Если верхний элемент не ноль, переходим по метке mark. По крайней мере так у меня =) МОжет быть, должно быть наоборот, но, имхо это не так уж и важно

Команды и аргументы отделяются пробелом
Количество комманд, разрешенных в одной строке: 1
Разрешены пустые строки


================>метки<===============

<name>: (возможно, должен быть разрешен пробел между именем и двоеточием, но у меня не так)
После метки может идти еще несколько меток, команда и комментарий(через пробелы!)
то есть разрешено
mark1: mark2: mark3: ldc 8 ;comment

=============>комментарии<=============

начинается с ";". То есть если всетречается этот символ в тексте, то все после него - комментарий и опускается программой
 
Статус
Закрыто для дальнейших ответов.