# LDE32 -- Length-Disassembler Engine

## User's Manual

[Русский] [English]

LDE32 -- это библиотека для определения длин x86 инструкций.

В LDE32 всего две процедуры.

1. `void pascal disasm_init(void* tableptr);`

- используется для распаковки в память 2-килобайтной таблицы, которая потребуется второй процедуре при дисассемблировании.

2. `int pascal disasm_main(void* opcodeptr, void* tableptr);`

Эта функция используется для дисассемблирования одной инструкции. Возвращает длину инструкции в байтах, либо -1 в случае ошибки.

Процедуры сохраняют регистры неизмененными; код независим к смещению; не используются никакие внешние данные.

Для подключения LDE32 добавьте следующую строку:

`include lde32bin.inc`

пример
                    push    offset tbl      ; распаковать в память таблицу
                    call    disasm_init

                    mov     ebx, 401000h
    cycle:
                    push    ebx             ; оффсет инструкции
                    push    offset tbl      ; адрес таблицы
                    call    disasm_main

                    add     ebx, eax

                    cmp     eax, -1         ; ошибка?
                    jne     cycle

    include         lde32bin.inc            ; код LDE32

    tbl             db      2048 dup (?)    ; таблица флагов LDE32

programmed in 1999 by Z0MBiE, z0mbie.cjb.net