Расшифровка библиотек LBX BASCOM. Библиотеки LBX компилятора BASCOM представляют собой зашифрованные версии библиотек LIB. Шифрование простое - большинство строк заменяется объектами типа «.OBJ xxxx». Их цифровой код выбирается из заранее составленной таблицы ассемблерных инструкций AVR-контроллера, имея которую можно восстановить исходный код. Таблица приведена ниже, рассмотрим примеры работы с ней: 1) .OBJ 93AF - находим в таблице 93RF (сначала ищем по совпадению красных символов) - инструкция PUSH, Cиний символ A - номер регистра - это регистр R26 (0-R16, 1-R17, 2-R18... F-R31). Получаем PUSH R26. 2) .OBJ E841 - находим EMRL - это инструкция LDI. R=4, значит это регистр R20. M=8, L=1 - старший и младший ниблы числа. Получаем LDI R20,$81
Объект
|
Инструкция
|
Функция
|
0
|
NOP
|
Выполнить холостую
команду
|
3RX
|
FMUL
|
Дробное незнаковое
умножение
R - регистр 16...23
(0=R16...7=R23)
X - регистр 16...23
(F=R16...8=R23 !!!)
|
3XR
|
FMULS
|
Дробное умножение
со знаком
X - регистр 16...23
(F=R16...8=R23 !!!)
R - регистр 16...23
(0=R16...7=R23)
|
... | ... | ... |
Присмотревшись внимательнее к
таблице можно заметить совпадения некоторых кодов. Например:
LSL R0 = ADD R0,R0
SEC = BSET0
CLS = BCLR 4 и т.д.
Это не опечатка - эти пары
инструкций равнозначны. При расшифровке можно вставить любую из них.
Полный текст материала.
Творческих успехов!
MrShilov.
|