Да, IDA Pro это мощь... Хм, а может кто напишет простую инструкцию по дизассму спековских прог (а то реально что-то не очень хочется вникать в эту кучу менюшек), ну что-то типа фаст гайда для чайников?
Да, IDA Pro это мощь... Хм, а может кто напишет простую инструкцию по дизассму спековских прог (а то реально что-то не очень хочется вникать в эту кучу менюшек), ну что-то типа фаст гайда для чайников?
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Оффтоп конечно уже, так как к теме асма никакого отношения не имеет...
Лично я отдизасмил 48ю игрушку одну довольно просто, имхо все весьма интуитивно - правой кнопкой мыши тыкаешь в текст - узнаешь горячие кнопки и вперед =) проблемы какие-то правда иногда возникают с двухбайтовыми переменными (у которых к любому байту обращение), а еще с адресами, к которым обращение идет - hl, adr: de, adr+1... ну и в идеале неплохо было бы с 128ми прогами научиться работать... Отдельная тема наверно нужна - ну и люди заинтересованные в этом....
Я по-началу был очень обрадован этим асмом, думал нашел то, что долго искал, но постепенно начали вылезать нехорошие моменты, что меня очень огорчает.Сообщение от Aprisobal
Баги в v1.07 RC4bf (build 02-12-2006).
1). Баг в отработке директивы "EXPORT" - не продвигается (?) входящий поток, поэтому компилятор ругается. В оригинальном компиляторе (2-х проходном) такого бага нет.
Пожелание: Было бы не плохо для "EXPORT" перечислять имена меток через запятую, а не прописывать для каждой метки директиву "export".
2). Баг с выводом hex-чисел для "EQU" (по опциям --sym, --exp), если число занимает все разряды (т.е. оно 32-х битное) и самый старший разряд начинается с A..F. Измени формат записи числа - ставь ведущим "#" или "0x" вместо концевого "h".
3). Тоже что-то там с входящим потоком, ругается на следующий код:
Оригинальный асм это компилит без проблем.Код:db 0,0,0,0,0,0,0,0,0,0,0 ; T0C83: db "Ё",1Bh,"!",'"',"#","$",":",",",".",";","?","%","_","+",8
4). И еще одна ситуация. Не переваривает например такую запись байта:
Понятно, что для записи обратного слэша нужно юзать "\\", но правильней все же записывать как "\". Такая запись применяется во всех асмах (кроме этого). Это как-то криво, записывать ld a,"\\"Код:ld a,"\"
Вобщем ты увлекся второстепенными фитчами, а про сам асм забыл. Исправляй ситуацию.
Попробуй плз версию, которая приклеплена к сообщению. [...вышла.новая.версия...]
Ориентировка была не на спековские асмы(думаю ты их упомянул), а на современные стандарты. Также как и в C, C++, C#, PHP, Perl, JavaScript и пр. в двойных кавычках "" SjASMPlus (и оригинальный SjASM) обрабатывает управляющие последовательности типа \n, \t, \r... Просто в SjASMPlus сделал так, что в одинарных кавычках '' управляющие последовательности не действуют.Сообщение от Vasil
После недавнего общения с Alone Coder'ом составил следующий полезный LUA скрипт. Вставляю сюда, чтобы не пропало.
Код:LUA -- Функция увеличивает на 1 число, записанное в файле fname и создает define с именем BUILD для, например, директивы DISPLAY -- Пример использования функции см. ниже. -- Внимание! Самостоятельно создайте пустой файл build.txt, иначе функция не будет работать function increase_build(fname) local fp local build fp = assert(io.open(fname, "rb")) build = tonumber(fp:read("*all")) assert(fp:close()) if type(build) == "nil" then build = 0 end build = build + 1; sj.insert_define("BUILD", build) fp = assert(io.open(fname, "wb")) assert(fp:write( build )) assert(fp:flush()) assert(fp:close()) end increase_build("build.txt") -- Создать define "TIME" с текущим временем sj.insert_define("TIME", '"' .. os.date("%Y-%m-%d %H:%M:%S") .. '"') ENDLUA ; отобразим время и номер сборки DISPLAY "Build time: ", TIME DISPLAY "Build number: ", /D, BUILD
Последний раз редактировалось Aprisobal; 25.04.2007 в 10:49.
ATW4GS / BIN2SNA / SquareMania <ТИ-3> / Ужасм+
ATM-Turbo 512 v4.50, Commodore 64G + TAC-2, Retro-Bit Super Retro TRIO
1) "sub a,*" ассемблируется в две команды "sub a" и "sub *", что выбивается из ряда "add/adc/sbc a,*", совпадающих при ассемблировании с "add/adc/sbc *" (хотя формально все правильно, выглядит нелогично).
2) СЕРЬЕЗНЕЙШИЙ БАГ - директивы "ORG $-n" (и "ORG $+n") не влияют на бинарник, хотя в листинге отражаются правильно!! (хотел панимаиш встроить в макросы оптимизацию, а тут такой облом)
Прихожу без разрешения, сею смерть и разрушение...
По справочнику всё ИМХО логично. Сам из оригинального асма это убрал.
Как понял ты пишешь про бинарник, который задается директивами OUTPUT (или который выдается в файле *.out). ORG не в режиме, устанавливаемом дир-ой DEVICE, работает почти как DISP/PHASE/TEXTAREA, т.е. просто задает виртуальный адрес, а все данные компилятор одним потоком сует в выходной файл.
Советую использовать директиву DEVICE и доступные после директивы SAVEBIN, SAVETRD, SAVESNA и т.д.
ATW4GS / BIN2SNA / SquareMania <ТИ-3> / Ужасм+
ATM-Turbo 512 v4.50, Commodore 64G + TAC-2, Retro-Bit Super Retro TRIO
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А если неохота привязываться к устройству? Вон на песюке же такой номер сразу же проходит, а там ведь сначала формируется obj... Имхо как должно быть: в out выводится участок от минимального из всех случившихся значений счетчика размещения до текущего (на момент END). Как вариант - до максимально случившегося значения.
Еще вопрос: LUA вообще нельзя в макрах использовать, или я че-то неправильно делаю? (пишет unexpected end of file)
Последний раз редактировалось Lethargeek; 25.04.2007 в 08:21.
Прихожу без разрешения, сею смерть и разрушение...
Последний раз редактировалось Aprisobal; 14.05.2007 в 01:57.
ATW4GS / BIN2SNA / SquareMania <ТИ-3> / Ужасм+
ATM-Turbo 512 v4.50, Commodore 64G + TAC-2, Retro-Bit Super Retro TRIO
а можно сделать, чтоб после фразы
"Errors: 6072, warnings: 0, compiled: 2343 lines, work time: 20.293 seconds"
он ставил ентер? а то если делать echo в батнике, оно сразу за этой сторокой пишется..
спасибо
ATW4GS / BIN2SNA / SquareMania <ТИ-3> / Ужасм+
ATM-Turbo 512 v4.50, Commodore 64G + TAC-2, Retro-Bit Super Retro TRIO
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)