Mario wrote:
Также, если кому интересно - список меток с адресами можно получить использовав утилиты идущие в комплекте с FASM.
Например для линуксовой версии это выглядит приблизительно так:
Code:
#!/bin/bash
#
echo "lang fix ru"
echo "lang fix ru" > lang.inc
fasm -m 16384 animage.asm animage -s animage.fas
listing -b 4 animage.fas animage.dbg
symbols animage.fas animage.sbl
rm -f lang.inc
exit 0
Однако даже самый очищенный файл, полученный из утилиты
symbols, содержит мусор. И к тому же порядок следования названий меток и адресов наоборот от требуемого для отладчика.
У меня есть планы прикрутить OpenDialog к отладчику для выбора отлаживаемого файла. Существующий синтаксис при этом не поменяется. Добавится только одна опция указывающая брать путь из области полученной от OpenDialog. По пути возможно доработаю утилиту
symbols до необходимого отладчику формата
*.dbgЧтобы не потерялось - копирую из чата инструкцию от
CleverMouse для генерирования
*.dbg-файла (для MTDBG) из FASM под Linux:
Quote:
CleverMouse « Fri Nov 21, 2014 5:16 pm » listing - утилита из комплекта fasm, если она даже не запускается, пусть сами разбираются, в чём дело
CleverMouse « Fri Nov 21, 2014 5:17 pm » yogev_ezra: я не удивлюсь, если они собрали tools/dos/listing.asm и удивляются, почему не работает
CleverMouse « Fri Nov 21, 2014 5:18 pm » я также не удивлюсь, если они скомпилировали tools/libc/listing.asm, но не слинковали
yogev_ezra « Fri Nov 21, 2014 5:18 pm » CleverMouse: А есть более простой способ получения .dbg для MTDBG под Linux?
CleverMouse « Fri Nov 21, 2014 5:21 pm » yogev_ezra: symbols kernel.fas kernel.lst && perl -ne 'print "$2\t$1\n" if m/([^:]*): (0x[^,]{16}),/ && $1 ne "@@"'
CleverMouse « Fri Nov 21, 2014 5:21 pm » listing - оно вообще не про то
yogev_ezra « Fri Nov 21, 2014 5:22 pm » CleverMouse: А symbols - тоже утилита из комплекта fasm, или встроенная в shell?
CleverMouse « Fri Nov 21, 2014 5:23 pm » yogev_ezra: утилита из комплекта fasm
yogev_ezra « Fri Nov 21, 2014 5:25 pm » CleverMouse: И kernel.lst можно будет скормить MTDBG, и будет достаточно?
CleverMouse « Fri Nov 21, 2014 5:26 pm » symbols kernel.fas kernel.lst && perl -ne 'print "$2\t$1\n" if m/([^:]*): (0x[^,]{16}),/ && $1 ne "@@"' kernel.lst > kernel.dbg
CleverMouse « Fri Nov 21, 2014 5:26 pm » kernel.lst в другом формате, однострочник на perl выбрасывает мусор и переводит формат