forum speccy.pl
ZX Spectrum => SOFTWARE => Wątek zaczęty przez: Tygrys w 2018.01.10, 16:42:26
-
Ostatnio korzystam z yazd -> https://github.com/toptensoftware/yazd/tree/master/yazd
Powstał jako 'port' z80ex -> https://sourceforge.net/projects/z80ex/ - ten z kolei jest napisany w czystym C.
Jak dla mnie spełnia swoje zadanie, choć nie jest uniwersalny - napisany w C# więc kompilacja jest pod windows lub linuxa (o ile ktoś uznaje mono).
Główną zaletą dla mnie jest to, że potrafi odróżnić kod asm od danych i odpowiednio to zdekompilować.
Czy ktoś używa innych disassemblerów, najlepiej darmowych, i może polecić?
-
Kiedy robilem podejscie do Disassemblera to byl mix miedzy IDA a Z80 Simulator IDE.
IDA to chyba wersja 4.1 dlatego ze to ostatnia darmowa wersja z supportem dla Z80.
Z80 IDE to czesc tego zestawu:
http://www.oshonsoft.com/z80.html
Pozdro.
-
mdz80 (https://www.z80cpu.eu/78-data-articles/projects/76-mzt)
Działa z linii poleceń, stara się odgadnąć gdzie jest kod a gdzie dane, jeśli się pomyli to można ręcznie zmodyfikować mapę obszarów.
Wyjście jest w pewnym stopniu konfigurowalne i dość przyjazne.
;
; MDZ80 V0.9.0 Z80 Disassembly of MEM.dat
; 2017/03/31 15:56
;
ORG $2156
;
JP X21A6 ; 2156 C3 A6 21 C&!
;
LD A,(HL) ; 2159 7E ~
CP $46 ; 215A FE 46 ~F
JR Z,X2163 ; 215C 28 05 (.
CP $66 ; 215E FE 66 ~f
JP NZ,X0082 ; 2160 C2 82 00 B..
X2163: LD A,$20 ; 2163 3E 20 >
LD (HL),A ; 2165 77 w
DEC HL ; 2166 2B +
LD (HL),A ; 2167 77 w
-
A dla ogryzkowych i majacych alergie na Wine'o: http://k1.spdns.de/Develop/Projects/zxsp-osx/Distributions/
-
Tegoż autora polecam ZASM (https://k1.spdns.de/Develop/Projects/zasm-4.0/) - jeden z moich ulubionych assemblerów.
-
Kiedys uzywalem tego:
http://www.inkland.org.uk/dz80/
W LUA mozna dopisac swoje rozszerzania.
Jest jeszcze Skoolkit:
https://github.com/skoolkid/skoolkit
Wspiera pasmo i sjasm.
-
Dzięki za linki, jak widać możliwości jest wiele!
Wiem że niektóre emulatory miały możliwość zgrania listingu programu do pliku tekstowego, zwłaszcza jeden, który potrafił wygenerować w locie listing wykonywanego programu. To jest mega pomocne przy profilowaniu / optymalizacji.
-
A ja kiedyś używałem perlowego disassemblera z dorobionym do niego "czyścikiem", który wywalał nadmiarowe informacje. Potem coś mi się tam zaczęło kaszanić a że w międzyczasie zacząłem się uczyć nowego języka (Dart - https://www.dartlang.org/) to stwierdziłem, że zrobię sobie disassembler "pod siebie" ;)
Skrypt wymaga zainstalowanego w systemie Darta (pod Windowsem prawdopodobnie trzeba też dodać rozszerzenie do skryptu). Bierze na wlocie kawałek binarki, nazwę pliku wynikowego i adres od jakiego ta binarka się zaczyna. Dodatkowo jako pierwszy parametr można podać -r, co wygeneruje disassemblację w trybie "debuggera" - adres, kody i instrukcja bez analizy etykiet itp. W normalnym trybie wychodzi plik z etykietami zgodny z PASMO a kody są przeniesione do komentarza za instrukcją. Skrypt nie jest jakoś bardzo inteligentny (ani bardzo ładny w środku ;)), ale do moich potrzeb jest wystarczający a i może komu innemu się przyda :)
-
http://tooloudtoowide.marcinrusinowski.com/wp-content/uploads/2017/04/z80-mac-ide.jpg (http://tooloudtoowide.marcinrusinowski.com/wp-content/uploads/2017/04/z80-mac-ide.jpg)
ZXSP startowo bardzo fajny, niestety nie jestem jakimś wyjadaczem assemblerowym, żeby stwierdzić jak to się ma w kategoriach "pro".
-
Ciekawie też wygląda debugger z xpeccy.
Muszę się z nim chyba bardziej zaprzyjaźnić :)
-
Dzięki mat za podzielenie się disassemblerem! Fajnie to wygląda 'w środku'. Jeszcze tego nie odpalałem, ale postaram się poużywać i podzielić się spostrzeżeniami a może i 'request featurami' jeżeli je przyjmujesz.
-
Hejka,
Dla mnie przy probach deasemblacji najwiekszym problemem zawsze relatywne skoki na bazie tego co aktualnie siedzi w pamieci.
Sama zamiana wartosci na komendy chyba nie do konca da sie odtworzyc co autor mial w zamiarach.
Pozdrawiam.
-
@Tygrys Skrypt pisałem dla siebie więc istnieje prawdopodobieństwo, że nie robi rzeczy, które nie były mi potrzebne ;) Ale jak ci się nie chce uczyć Darta to pewnie - pisz jakie masz uwagi - zobaczymy co się da z nimi zrobić :)