PC-01 Lviv
http://pc01.lviv.ua/forum/

LVTtoTASM
http://pc01.lviv.ua/forum/viewtopic.php?f=20&t=386
Page 1 of 1

Author:  als [ 12 Jan 2021, 19:06 ]
Post subject:  LVTtoTASM

Разбираясь з темой звука скачал архив "MSPLAY.ZIP" предоставленный sadfsdfsdaf.
Увидел там исходники, и Бат-файл со строкой "tasm -85 -b msplay.asm MSPLAY.LVT".
Я в ТАСМ никогда особо не вникал. Но это меня заинтересовало, решил скачать TASM 3.2.
и расмотреть все. Далее я решил написать дискомпилятор для TASM 3.2 из LVT. Точнее "перекрутить" существующий у меня под МАДЛ на ТАСМ.
Понятное дело, что существуют там всякие IDA и т.д. но это уже отдельная история.
С "обычными" метками мой дискомпилятор работает вроде нормально (хотя еще тщательно не тестировал).
Ну тот меня "ударило в стопор" :-) дискомпиляция программы SPY.LVT.
В ней есть метки которые указывают на второй и третий байт, трехбайтовой команды, причем у той команды второй и третий байт тоже является меткой(!)
И вот я не понял, - а как такое дискомпилировать в ТАСМ ?
вот пример из SPY.LVT.
Мой МАДЛовский дископилятор дискомпилирует это так

LABELp1(L91D1);LxiDE(L0000);

Что означает установить метку L91D1 на_адрес_где_метка_плюс_один, т.е. на младший байт команды LxiDE.
Ну а как такое "разруливается" ТАСМОм ? И "разруливается" ли вообще ?

Если бы вместо метки L0000 было числовое значение, можно бы было это решить! А тут метка!

И такого в SPY.LVT немало.
Вот еще.
LABELp1(L926F);LxiDE(LA000);
и вот
LABELp1(L92AF);LxiDE(L0000);
а тут вот вообще "весело"
LABELp1(LAD16);LABELp2(LAD17);LxiDE(LAEE0); - одна метка на младший, вторая на старший байт команды LxiDE, которая в параметре содержит метку.

С метками на второй (старший байт) (LABELp2) тоже "весело"
LABELp2(LAD17);LxiDE(LAEE0);
Правда, один раз только нашел такое, но все таки.

Короче, :-) как быть и что делать в таких случаях ?
или я чего-то туплю... :-)

Author:  als [ 14 Jan 2021, 11:00 ]
Post subject:  Re: LVTtoTASM

Attachment:
File comment: LVTtoTASM
LVTtoTASM.7z [490.29 KiB]
Downloaded 3366 times
В данном архиве находится по сути целая среда разработки :-)
LVTtoTASM0.exe, LVTtoTASMm.exe — декомпиляторы,
TASM.EXE, TASM85.TAB - компилятор TASM 3.2
SASEmulator - эмулятор.
Распаковываем и запускаем
TEST0.bat
TESTM.bat

Author:  als [ 14 Jan 2021, 18:39 ]
Post subject:  Re: LVTtoTASM

Хотел декомпиляторы "перекрутить" для FASM.
Вот только не знаю - как TASM85.TAB "прикрутить" (использовать) к FASM ?
Может кто подскажет.
Может sadfsdfsdaf знает, подскажи плиз ?

Author:  Zelya [ 19 Jan 2021, 16:52 ]
Post subject:  Re: LVTtoTASM

Quote:
В ней есть метки которые указывают на второй и третий байт, трехбайтовой команды, причем у той команды второй и третий байт тоже является меткой(!)
Такое используется довольно часто. Программа динамически изменяет код. Чаще всего - это адрес перехода. Но бывает, что условный переходможет меняться на безусловный, или же меняться аругмент +1/-1 и т.д.

Author:  als [ 19 Jan 2021, 17:46 ]
Post subject:  Re: LVTtoTASM

Quote:
Quote:
В ней есть метки которые указывают на второй и третий байт, трехбайтовой команды, причем у той команды второй и третий байт тоже является меткой(!)
Такое используется довольно часто. Программа динамически изменяет код. Чаще всего - это адрес перехода. Но бывает, что условный переходможет меняться на безусловный, или же меняться аругмент +1/-1 и т.д.
Zelya, вопрос в том как это декомпилировать в ТАСМ? т.е. как это должно быть написано на ТАСМ ?
Вот конкретный пример:

LABELp1(L91D1);LxiDE(L0000);

Или же другими словами это так:

$91D0: LXI DE,
$91D1: L91D1: (второй байт (младший, команды LXI DE))
$91D2: (третий байт (старший, команды LXI DE))

Как всё такие такое на ТАСМе пишется ?

Author:  Zelya [ 19 Jan 2021, 19:20 ]
Post subject:  Re: LVTtoTASM

Как в тасме - не знаю. Мне было бы удобно приблизительно так:

$0010: LABEL_1: JMP LABEL_2

....

$0100: LXI HL, LABEL_3
$0103: SHLD LABEL_1 + 1

Author:  als [ 19 Jan 2021, 20:34 ]
Post subject:  Re: LVTtoTASM

Quote:
Как в тасме - не знаю. Мне было бы удобно приблизительно так:

$0010: LABEL_1: JMP LABEL_2

....

$0100: LXI HL, LABEL_3
$0103: SHLD LABEL_1 + 1
Слушай, надо будет попробовать такое в ТАСМе (LABEL_1 + 1) может действительно работает там такое.

Author:  als [ 17 Feb 2023, 19:09 ]
Post subject:  Re: LVTtoTASM

Дивно, що я не виложив сюди LVTtoTASM2 (з "примочкою" HOFAF.exe).
Attachment:
210423_LVTtoTASM2.7z [537.82 KiB]
Downloaded 3159 times

Page 1 of 1 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/