Ahoj, udelal jsem si nejakou zakladni vizi ohledne breakpointu. Prozatim jeste nevim nakolik to budu schopen realizovat a jeste nemam ani zcela ujasneno jak se to bude uzivatelsky obsluhovat. Evidentne je to vsak plan na delsi casovy usek: Breakpointy by melo byt byt mozne udrzovat ve skupinach, ktere jsou identifikovatelne jmenem. Celou skupinu by melo byt mozne aktivovat/deaktivovat, ukladat, mazat. Kazdy samostatny breakpoint ma nejaky textovy description a optimalne mozna i unique name. Kazdy lze jednotlive aktivova/deaktivovat. Adresa: Zakladni breakpoint je urceny konkretni adresou na ktere dojde k zastaveni. Filtr: Rozsireny preakpoint je urcen adresou, nebo intervalem <od, do>. Dalsim parametrem takoveho breakpointu muze byt vyraz jehoz podminka musi byt splnena napr. "regBC = xxxx && regHL & 0xff < regAF>>8 && regDE >= yyyy". Krome registru by se ve vyrazech mohly objevit i nejake signaly, ktere jsou schovany uvnitr ruznych periferii - adresovani napr. jako gdg.beam_position, atp. Dalsim vyhodnocovanym prvkem ve vyrazech by mely byt variables, viz. nize. Counter: Incrementuje pri kazdem uspesnem naplneni podminky. Breakpoint bude aktivovan jednorazove, ci opakovane az po xx iteracich. Pocet jiz vykonanych iteraci je udrzovan jako lokalni variable, se kterym lze disponovat ve vyrazech, ci akcich. Akce: Nejbeznejsi akci breakpointu by melo byt STOP. Dalsimi moznostmi je vykonani nejake sequence operaci: prirazeni obsahu registru, variables, pameti, ci nastaveni periferii. Variables: Mohou byt vytvareny jako lokalni v ramci jednoho breakointu, globalni v ramci platnosti skupiny, a super globalni v ramci celeho sveta. Mate nekdo nejaky napad jak to rozumne zjednodusit, nebo naopak ucinit jeste silenejsim? :) Michal
Celé vlákno · 3 zprávy
Re: [SharpMZ] Breakpointy v emu - aneb navrhujeme novy programovaci jazyk s vlastnim operacnim systemem :)
Hynek Sladky <econf@[doména skryta]> SHARP MZ-800
To bude pekne slozity stroj :-) Pro ruzne analyzy by se jako akce mohlo hodit logovani do souboru bez zastaveni programu. Take by se mohl hodit datovy breakpoint: pri zapisu nebo cteni konkretni adresy nebo portu, pripadne pokud by slo rozlisit, zda to je 8- nebo 16-bitovy pristup H/L bytu (v pripade pameti). Pro ladeni aplikaci by se mohl hodit breakpoint na pristup do urcene oblasti pameti nebo naopak mimo urcenou oblast pameti (preteceni/podteceni). Hynek Sladky Dne 1.10.2015 9:08, Michal Hucik - ORDOZ napsal(a):
Zobrazit citovaný text (5 řádků)
> > Adresa: > > Zakladni breakpoint je urceny konkretni adresou na ktere dojde k zastaveni. >
Zobrazit citovaný text (7 řádků)
> Akce: > > Nejbeznejsi akci breakpointu by melo byt STOP. Dalsimi moznostmi je > vykonani nejake sequence operaci: prirazeni obsahu registru, variables, > pameti, ci nastaveni periferii. > >
Re: [SharpMZ] Breakpointy v emu - aneb navrhujeme novy programovaci jazyk s vlastnim operacnim systemem :)
Michal Hucik - ORDOZ <ordoz@[doména skryta]> SHARP MZ-800
Predpokladam, ze mas na mysli logovani jako jednu z moznych akci breakpointu - ci spise lepsi oznaceni by bylo "udalosti". Mohlo by se tam definovat neco jako format a params, ktere by se pak v bezpecne podobe predaly do fprintf(). V pripade takoveho logovani by se asi urcite hodilo mit k dispozici i variable s uplynulym casem emulace - udrzuju v gdg unsigned int ve kterem je celkovy pocet vykonanych snimku a samozrejme je k dispozici i pocet vykonanych gdg taktu v ramci aktualniho snimku. Tim si lze udelat predstavu o tom jak jsou od sebe ty udalosti casove vzdaleny, coz muze byt take uzitecne. Logovani by mohla byt mozna kapitola sama o sobe ... Parkrat jsem to pouzival predevsim k ladeni emu. Vetsinou mi stacilo od pruchodu urcitou adresou zacit logovat na kazdem radku obsah regPC. Ve slozitejsich pripadech jsem obcas logoval komplet disassemblovany vystup i s obsahem registru. Takovehle logy ovsem behem chvilky docela slusne rostou (zvlaste kdyz jsou v txt podobe) a k jejich analyze si pak vetsinou musim napsat treba nejake perl scripty. Takovy masivni log je ale asi uz dost specificky a mozna bude lepsi, kdyz si jej proste kazdy dle svych konkretnich potreb nakompiluje rovnou do programu. ad datove breakpointy: Mam predstavu, ze breakpointy budou vyhodnocovany za kazdou vykonanou instrukci, coz znamena, ze budou reagovat na to co se stalo - nikoliv na to, co se prave chysta stat. Pokud bych chtel podle datoveho breakpointu najit napr. misto, ktere mi prepisuje zasobnik, nebo misto ktere mi zapisuje do portu 0xCE nejakou hodnotu, tak se bud budu muset spokojit s vykonanim breakpointu bezprostredne po teto udalosti. To se navic trochu komplikuje tim, ze kdyz napr. v danou chvili jeste prijde interrupt, tak tim nasledujicim radkem bude az prvni instrukce v prerusovaci rutine, coz bude trochu zavadejici. K tomu, aby se tohle nejak hezky vyresilo by jsme asi museli do umulatoru zabudovat pred kazdou instrukci nejakou predikci toho co se stane a nebo implementovat nejaky rollback, ktery nas vrati o par gdg taktu zpet pokud byla identifikovana nase udalost. Na druhou stranu tento problem se asi tyka jen akce "STOP". Pokud by jsme tu udalost chteli jen zalogovat, tak k tomu mame v danou chvili vsechny potrebne informace a do logu by jsme umeli zapsat adresu na ktere se vyskytovala nami hledana instrukce. Rozhodne s tim vsim bude jeste hodne veselo :) Michal Dne 1.10.2015 v 9:43 Hynek Sladky napsal(a):
Zobrazit citovaný text (32 řádků)
> To bude pekne slozity stroj :-) > > Pro ruzne analyzy by se jako akce mohlo hodit logovani do souboru bez > zastaveni programu. > > Take by se mohl hodit datovy breakpoint: pri zapisu nebo cteni konkretni > adresy nebo portu, pripadne pokud by slo rozlisit, zda to je 8- nebo > 16-bitovy pristup H/L bytu (v pripade pameti). > > Pro ladeni aplikaci by se mohl hodit breakpoint na pristup do urcene > oblasti pameti nebo naopak mimo urcenou oblast pameti (preteceni/podteceni). > > Hynek Sladky > > > Dne 1.10.2015 9:08, Michal Hucik - ORDOZ napsal(a): >> Adresa: >> >> Zakladni breakpoint je urceny konkretni adresou na ktere dojde k zastaveni. >> >> Akce: >> >> Nejbeznejsi akci breakpointu by melo byt STOP. Dalsimi moznostmi je >> vykonani nejake sequence operaci: prirazeni obsahu registru, variables, >> pameti, ci nastaveni periferii. >> >> > _______________________________________________ > SharpMZ mailing list > SharpMZmail.ordoz.com > http://mail.ordoz.com/mailman/listinfo/sharpmz >