Welcome, Guest. Please login or register.


Author Topic: Assembly programozás (Read 257371 times)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #690 on: 2013.November.13. 17:07:25 »
Quote
De most komolyan! Tényleg azt várod, hogy valami nem létező kódról itt bárki megmondja neked, hogy tudja teljesíteni a kritériumaidat vagy sem?!
írottam vagyon:

"mondjuk elvben mintha csak NOP -okat tartalmazna,"


Quote
Egyébként tegyük fel egy pillanatra a gondolkodó sapkát!

Csak előtte mindenképp olvasd el amit írok.


Quote
4kHz-es megszakításnál van 1000 órajelciklusod két megszakításkérés között. Ebből ha levonod a használni tervezett leghosszabb Z80 utasítás órajelciklusainak kétszeresét, akkor nagyjából meg van az az érték, ami garantáltan rendelkezésedre fog állni. 312 soros LPT esetén nagyjából 3,9 soronként fog bekövetkezni megszakítás. Ha lenne információ arról, hogy rasztersoronként mennyi órajel szabad a videomemória írására illetve tudnád, hogy hány ciklusonként akarod írni, akkor valszeg tudnál egy becslést adni arra, hogy átlagosan mennyi késleltetést fog összeszedni a kódod a Nick buszfoglalása miatt a megjelenített képernyő sorokban.

De gondolom te nem ezt szeretted volna itt olvasni, hanem valami "Igen, 332." szerű választ. Félek, ez nem fog menni. Senkinek.

Most nem idézgetek be magamtól mindent, amitől azt hinni, hogy ezt hiszem, nem állja meg a helyét.

Mondom a lényeget. Újra. A megszakítási rendszer/z80 bizonytalankodásairól kérdeztem. Az lenne a kérdés, hogy van -e bizonytalanító faktor, és ha van, mekkora százalékos arányban lehet az 1/4KHz -hez képest.

Nem ismerem a fent említett NICK -kel kapcsolatos késlekedési szabályokat, de a késlekedés nem baj, ha X csillagnál X -szer van késlekedés, akkor az csak az összidőt növeli.
Ha azonban ez a NICK dolog olyan, hogy lehet hogy minden íráskor lesz, lehet hogy 1X sem, akkor már elképzelhető, hogy nagy lenne a bizonytalanság.
Viszont összegészében memória írásokkor mégsem gondolnám, hogy csupán azoktól komolyabb BIZONYTALAN késlekedés jönne össze ... valahogy úgy hinném, hogy ezek majd jól kioltják egymást, és kisül belőle valami átlag, tehát konstans késlekedés, ami viszont nem bizonytalan.

De ez már egy új dolog az eredeti kérdéshez képest, aminek a viselkedését meg most sem ismerem (pedig hát ez lenne a kérdés, hogy ilyenek vannak -e, és hogy kell velük számolni, milyen mértékben befolyásolnak vajon egy 1/4KHz -es időszeletet), az eredeti kérdés pedig ELVBEN és NOP -okról szólt.
Z80 System

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1298
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #691 on: 2013.November.13. 17:45:41 »
Juj!

 Megszakítási rendszer bizonytalankodása: igen van, attól függően, hogy milyen utasítás fut éppen és az hol tart, változó számú ciklust késhet a kezelő indulása.

Nick buszkésleltetés:
  • videoszegmensben fut a kódod?
  • csak írja a videószegmenst vagy olvassa is?
  • mindig csak kereten fut a kódod, vagy a képernyő aktív területén is?
mind-mind bizonytalansági tényező, ami változó mértékű késleltetést tud okozni. Mármint olyan kód esetében, ami effektíve használja a videomemóriát.

 Elvben mintha csak NOP-okat tartalmazna: egy NOP 4 ciklus, akkor kb. 253-254 NOP-od biztosan van. Még szerencse, hogy nem csinálnak semmit, így a majdani gyakorlati megvalósítás szempontjából semmit sem mondanak a problémáiddal kapcsolatban.

Nézd, én nem akarom azt állítani, hogy te hülye lennél, csak én vagyok helikopter, de még ha nem is olvastam végig és elemeztem részletesen az összes rögzített állításodat, az olvasmány élményeim és más gépen összegereblyézett ismereteim alapján próbáltam felhívni a figyelmed a tényleges gyakorlati megvalósítás során előtted álló problémákra, illetve arra hogy valós tesztekkel gyorsabban eljuthatsz a szükséges tudás megszerzéséig, mintha próbálnál elméleti konstrukciókat gyártani jelenleg nem pontosan ismert bizonytalanságok figyelmen kívül hagyásával. Már ha jól ki bírom magamat fejezni. Sajnos az sem erősségem. :(
« Last Edit: 2013.November.13. 18:02:51 by ergoGnomik »

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #692 on: 2013.November.13. 18:47:06 »
Quote
Nézd, én nem akarom azt állítani, hogy te hülye lennél, csak én vagyok helikopter,

Hát ez szép tőled ...


Quote
de még ha nem is olvastam végig és elemeztem részletesen az összes rögzített állításodat, az olvasmány élményeim és más gépen összegereblyézett ismereteim alapján próbáltam felhívni a figyelmed a tényleges gyakorlati megvalósítás során előtted álló problémákra,

Hát mégis úgy éreztem, hogy túl nagy az a gondolkodó sapi, és a szemed elé csúszott egy pillanatra.


Quote
illetve arra hogy valós tesztekkel gyorsabban eljuthatsz a szükséges tudás megszerzéséig, mintha próbálnál elméleti konstrukciókat gyártani jelenleg nem pontosan ismert bizonytalanságok figyelmen kívül hagyásával.

Ijesztő számomra, de kezdek hajlani eme igazságra, de azért még van bennem remény, hogy valaki másképp idomul a kérdéshez, és mégis tud valami ennél ügyesebb közelítést ismerni fel és adni, megmentve engem a dolog potyára kipróbálásától.


Quote
Megszakítási rendszer bizonytalankodása: igen van, attól függően, hogy milyen utasítás fut éppen és az hol tart, változó számú ciklust késhet a kezelő indulása.

Hát igen, de azt gondolnám, hogy mondjuk 1-20 BIZONYTALAN ciklus ideje az 1/4KHz -es időhöz képest nem egy nagy eresztes, elhanyagolható ... ennyi jöhetne kb. egy utasításból, gondolom ... ezt sztm be lehetne áldozni. De vajon milyen BIZONYTALAN késlekedések lehetnek még ...

Valahogy nehezen fér bele a világképembe, hogy ha én pld. mást sem csinálok, csak video RAM -ot írok egymás után folyamatosan egy 1/4KHz "időtartamig" (kibontott kód, semmi más), akkor egy komolyan ingadozó idejű kódot kapnék, mondjuk az említett NICK működésből fakadó bizonytalankodás miatt.

Vagy mégis ? És ha igen, akkor mondjuk egy ilyen teoretikus esetben vajon ez mekkora lehet ? A bizonytalankodás ? A minimum és maximum idejű lefutás közötti különbség ?

Quote
[ul]
  • videoszegmensben fut a kódod?
[/ul]
(Hát még persze, hogy) nem.

[ul]
  • Quote
    csak írja a videószegmenst vagy olvassa is?
[/ul]
Ír csak a képre.

Quote
[ul]
  • mindig csak kereten fut a kódod, vagy a képernyő aktív területén is?
[/ul]
Hát eddig nem akartam ezzel vacakolni, de ha ettől lenne stabil, beküzdhetem a keretre.





Egyébként lehet hogy túl erős lépés lenne ez ... túl komplex optimalizálási lépés az eredményhez képest ... Ez az egész megszakításba pumpálás ...

Van pld. egy ilyen verzió, amihez 1 db szegmens (adat) kell, és simán tudna működni a főprogramból (nincs benne SP használat):

 ld d, (hl)
 ld (de), a
 inc l
 inc e

 ld d, (hl)
 ld (de), a
 inc l
 inc e

ez egy csillagot törölne, majd kiírna új helyre, kettő között persze lenne nem csillagonkéni inicializáló kód
ez csak a magot tekintve 11 us -ig tartana,

és ehhez képest lenne a gyorsabb, megszakba kényszerülő verzió, aminek mellesleg 2 szegmens (adat) is kéne :) :

 pop hl
 ld (hl), a

 pop hl
 ld (hl), a


ami 8.5 us lenne ... szoval a 11 -hez képest azért jelentős, de nem biztos, hogy feltétlenül fontos olyan áron, amiket itt beszélünk.

Pláne, hogy eddig 21 us körül volt ... és már azt is elfogadtam lélekben.
« Last Edit: 2013.November.13. 18:51:42 by Z80System »
Z80 System

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Assembly programozás
« Reply #693 on: 2013.November.13. 19:01:22 »
tényleg, miért nem próbálgatod ezeket ki? hamarabb megvan mint hogy leírnád ide :)
Vigyázat! Szektás vagyok! :)

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1298
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #694 on: 2013.November.13. 19:03:38 »
Quote
Ijesztő számomra, de kezdek hajlani eme igazságra, de azért még van bennem remény, hogy valaki másképp idomul a kérdéshez, és mégis tud valami ennél ügyesebb közelítést ismerni fel és adni, megmentve engem a dolog potyára kipróbálásától.
Bárminek a kipróbálása soha sem számít potyára dolgozásnak. Szerintem. Még akkor sem, ha valaki már kipróbálta előtted és bebizonyította hogy működik vagy nem. Mert mi van, ha te még észreveszel valamit, ami vagy jobbá vagy egyáltalán lehetővé teszi a próba tárgyát?

Egyébként gondolod, hogy IstvanV amikor írta az ep128emu-t csak úgy ült és elmélkedett magában, vagy írta az egyre trükkösebb és optimalizáltabb teszt programokat, és időnként meglepődött? Különben ő lenne a legjobb ember erre a feladatra (ahogyan látom), de nem vagyok benne biztos hogy meg akarná írni helyetted a programod legtrükkösebb részeit. :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #695 on: 2013.November.13. 19:10:46 »
Quote
Egyébként gondolod, hogy IstvanV amikor írta az ep128emu-t csak úgy ült és elmélkedett magában, vagy írta az egyre trükkösebb és optimalizáltabb teszt programokat, és időnként meglepődött?
Ezért is IstvanV egy megaguru aki rúlz, én meg egy szimmepla alkalmazás programozó, aki küzd ...

Quote
Különben ő lenne a legjobb ember erre a feladatra (ahogyan látom),
Vagy Zozo, vagy geco, vagy te, vagy akárki aki ért hozzá ... (kivéve endit persze :))


Quote
de nem vagyok benne biztos hogy meg akarná írni helyetted a programod legtrükkösebb részeit. 

Hát sajnos ... pedig az lenne a legegyszerűbb. De hát ez a fránya teremtő kitalálta ezt a szabad akarat dolgot ... lennék csak én a helyébe, minden EP guru játékot kódolna ... vagy pedig lenne az EP -be szprá ...
Z80 System

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Assembly programozás
« Reply #696 on: 2013.November.13. 19:33:55 »
Quote from: Z80System
Vagy Zozo, vagy geco, vagy te, vagy akárki aki ért hozzá ... (kivéve endit persze :))
Én is meg tudnám csinálni, de csak BASIC-ben, sok IF-fel, ami kicsit lassú lenne, de nem baj, mert ott a Zzzzzzzzip! :D
Itt már megint nem az assembly programozásról van szó lassan, de sebaj. :D
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #697 on: 2013.November.13. 19:42:23 »
Quote
Itt már megint nem az assembly programozásról van szó lassan, de sebaj. 
Azért a célt sem veszítjük szem elől.
Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14732
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #698 on: 2013.November.13. 19:48:39 »
Errefelé tettem be méri eredményeket. És ezek még csak szimpla ismétlődő utasítások voltak... Szerintem is mérd le, egy hosszabb kódra lesz egy átlag.

Ami szóba került, hogy keret - nem keret, az Nicknél nem számít, az se, hogy van-e képernyő vagy nincs, mindig pontosan ugyanolyan ütemben használja a videó memóriát.

Offline Povi

  • EP addict
  • *
  • Posts: 2297
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #699 on: 2013.November.14. 10:05:57 »
tudtok ajánlani valami jó Z80 dissassembláló programot PC-re?
*** Speicherplatz zu klein

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #700 on: 2013.November.14. 10:09:21 »
Hát ... az emuban van ... az emu meg PC -n is ... annál kényelmesebbet keresnél ?
Z80 System

Offline Povi

  • EP addict
  • *
  • Posts: 2297
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #701 on: 2013.November.14. 10:18:53 »
ööö... én olyat keresek, amibe betöltök egy fájlt, megmondom a kezdőcímet (hogy hova dissassemblálja), majd kiírja nekem txt fájlba
*** Speicherplatz zu klein

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Assembly programozás
« Reply #702 on: 2013.November.14. 10:26:37 »
Aham ... hát ilyet még nem csináltam emuban. Simán lehet hogy nem is tud ilyet. De sajnos nem ismerek direkt PC disassemblert.
Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Assembly programozás
« Reply #703 on: 2013.November.14. 10:34:19 »
Quote from: Z80System
Aham ... hát ilyet még nem csináltam emuban. Simán lehet hogy nem is tud ilyet. De sajnos nem ismerek direkt PC disassemblert.
Az emulátor disassemblere file-ba is tud írni, például d "" 100 3fff. Azonban ha fordítható assembler kód kell címkékkel, akkor érdemesebb erre a célra készült külső disassemblert használni.

Offline Povi

  • EP addict
  • *
  • Posts: 2297
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #704 on: 2013.November.14. 10:38:08 »
köszi
közben találtam ezt: dZ80
egész használhatónak tűnik
http://www.inkland.org.uk/dz80/
legközelebb google-zok, aztán kérdezek... :oops:
*** Speicherplatz zu klein