ade86 assembler/disassembler

Тема в разделе "WASM.PROJECTS", создана пользователем Smile, 13 окт 2006.

  1. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Assemble Disassemble Engine 86-32

    Библиотека поддерживает набор общих инструкций до P6(686), режимы 16/32 бита.
    Код библиотеки базонезависимый, без использования внешних функций.

    Компилятор: fasm/tasm/masm/nasm


    Создал тему в "PROJECTS", так как, предпологаю(наивно), что кто-нибудь поможет найти ощибки или и даже!!! исправит их :)))

    Планируется:
    1)Перевисать функцию PRINT_DIS86 на ассемблере
    Код испортился, пришлось быстренко на С++ :dntknw:
     
  2. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Инструкции str/sldt
    SLDT Ew
    STR Ew

    Fasm допускает такие формы:
    Код (Text):
    1.  str eax ; 0F 00 C8
    2.  str ax ; 66 0F 00 C8
    Аналогично для sldt, допустимо ли такое или это ощибка в fasm?
     
  3. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    В Фасм все правильно, закодированно корректно.

    Код (Text):
    1. ; Оставляет без изменения старшие разряды
    2. str ax
    3. lsdt ax
    4.  
    5. ; Зполняет все разряды
    6. str eax
    7. sldt eax
     
  4. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Внимание!
    В предидущих версиях, при подключении в виде бинарного файла, смещения настраивались не верно.

    Переписал все на ассемблере, больше ничего делать небуду :p
     
  5. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
  6. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Версия 0.4 25/01/07

    [*] Поправлены флаги инструкции JMP(Ev).

    [*] Исправлены формат инструкции группы 0x82 и PUSH(Ev), TEST(Gv,Iv)

    [+] Добавлен флаг C_COND, для инструкий выполняемых с неявным условием
    (LOOP/LOOPZ/LOOPNZ/JCXZ/JECXZ).

    [+] Добавлен флаг C_SFMT, если установлен заменяет константу адреса на '%s'.

    Версия 0.3 19/01/07

    [*] Условный код jcc не отображался при дизассемблировании.

    [*] Переменная DIS86::ip после дизассемблирования содержала неверные данные.

    [*] Функйи PRINT_DIS86 теперь добавляет в выходной буфер символ конца строки.