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

Тема в разделе "Предложения работы", создана пользователем katerina99, 16 июл 2008.

Статус темы:
Закрыта.
  1. katerina99

    katerina99 Гость

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

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

    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

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

    начинается с ";". То есть если всетречается этот символ в тексте, то все после него - комментарий и опускается программой
     
Загрузка...
Похожие Темы - СРОЧНО НУЖНА ПОМОЩЬ
  1. paNDa
    Ответов:
    3
    Просмотров:
    1.299
  2. Scrum
    Ответов:
    0
    Просмотров:
    1.186
  3. XserX
    Ответов:
    0
    Просмотров:
    977
  4. Marazm
    Ответов:
    0
    Просмотров:
    1.292
  5. GimmyGee
    Ответов:
    1
    Просмотров:
    1.336
Статус темы:
Закрыта.

Поделиться этой страницей