Assemble Disassemble Engine 86-32 Библиотека поддерживает набор общих инструкций до P6(686), режимы 16/32 бита. Код библиотеки базонезависимый, без использования внешних функций. Компилятор: fasm/tasm/masm/nasm Создал тему в "PROJECTS", так как, предпологаю(наивно), что кто-нибудь поможет найти ощибки или и даже!!! исправит их )) Планируется: 1)Перевисать функцию PRINT_DIS86 на ассемблере Код испортился, пришлось быстренко на С++
Инструкции str/sldt SLDT Ew STR Ew Fasm допускает такие формы: Код (Text): str eax ; 0F 00 C8 str ax ; 66 0F 00 C8 Аналогично для sldt, допустимо ли такое или это ощибка в fasm?
В Фасм все правильно, закодированно корректно. Код (Text): ; Оставляет без изменения старшие разряды str ax lsdt ax ; Зполняет все разряды str eax sldt eax
Внимание! В предидущих версиях, при подключении в виде бинарного файла, смещения настраивались не верно. Переписал все на ассемблере, больше ничего делать небуду :p
Версия 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 теперь добавляет в выходной буфер символ конца строки.