OldComp.cz
https://oldcomp.cz/

Assembler
https://oldcomp.cz/viewtopic.php?f=40&t=421
Stránka 27

Autor:  zz_indigo [ 19.08.2013, 22:06 ]
Předmět příspěvku:  Re: Assembler

ObiWanKen píše:
Sorry, trochu OT.
Ja som kodoval na 8-bitoch s CPU MOS 6502 (6510) a paci sa mi ako kazdy z nas pocita(l) takty.
Ja som mal takto isto cele podprogramy a ku kazdemu popis kolko taktov trva, co vstupuje v registroch atd. :jump:
A co som Z80 koderom zavidel bol pocet registrov procesora. :god2:


256 "registrou" v 65xx rade je ti malo? (0=ta stranka RAM)

Co mna viac stvalo ze na Z80/i8080 maju variabilny zasobnik. ziadne obmedzenie na 256 bitovy ktor lahko pretiekol.

Autor:  ObiWanKen [ 19.08.2013, 22:39 ]
Předmět příspěvku:  Re: Assembler

To co som zavidel boli 16bit registre. Ktore 65xx nema. Tam som to potom riesil skor cez "self modifying code" ako cez ZP.

Samozrejme ze sa da pouzit ZP ale zase nie ako plnokrvne 16bit.
ZP som skor pouzival na tabulky s predpocitanimy hodnotami (pre rychlejsi pristup CPU do ZP).
Napr. prevod pozicie Sprite/PMG-VideoRAM atd.
A napriklad Atari OS pouziva vo velkej miere ZP. Ale miesto tam vzdy bolo na nejaky ten "register".

Autor:  Busy [ 20.08.2013, 08:56 ]
Předmět příspěvku:  Re: Assembler

zz_indigo píše:
ObiWanKen píše:
Sorry, trochu OT.
Ja som kodoval na 8-bitoch s CPU MOS 6502 (6510) a paci sa mi ako kazdy z nas pocita(l) takty.
Ja som mal takto isto cele podprogramy a ku kazdemu popis kolko taktov trva, co vstupuje v registroch atd. :jump:
A co som Z80 koderom zavidel bol pocet registrov procesora. :god2:

256 "registrou" v 65xx rade je ti malo? (0=ta stranka RAM)

Takychto pametovych 256 registrov ma aj Z80, dokonca dve sady, a nemusia byt len v prvych 256 bajtoch ram, ale uplne kdekolvek v pameti :neener: Ale zase je pravda, ze nevie s nimi robit tak domyselne adresovacie rezimy a pristup k nim je velmi pomaly (vela taktov) :bang:

zz_indigo píše:
Co mna viac stvalo ze na Z80/i8080 maju variabilny zasobnik. ziadne obmedzenie na 256 bitovy ktor lahko pretiekol.
No to je prave len a len dobre !!! Velmi vela efektov v demach (hlavne kde sa vela toho hybe po obrazovke) je robenych prave cez zasobnik umiestneny vo videoramke ;) Napriklad nekonecne sprajty a aj obidve multicolorove casti v Echologii by sa bez plnenia videoramky cez zasobnik nedali urobit.

Autor:  ObiWanKen [ 20.08.2013, 09:16 ]
Předmět příspěvku:  Re: Assembler

Aj ked len tri registre, daju sa robit zazraky.

http://www.pagetable.com/?p=64

Takze 6502 ma este dlhu zivotnost !!!

Autor:  zz_indigo [ 20.08.2013, 15:21 ]
Předmět příspěvku:  Re: Assembler

ObiWanKen píše:
To co som zavidel boli 16bit registre. Ktore 65xx nema. Tam som to potom riesil skor cez "self modifying code" ako cez ZP.

Samozrejme ze sa da pouzit ZP ale zase nie ako plnokrvne 16bit.
ZP som skor pouzival na tabulky s predpocitanimy hodnotami (pre rychlejsi pristup CPU do ZP).
Napr. prevod pozicie Sprite/PMG-VideoRAM atd.
A napriklad Atari OS pouziva vo velkej miere ZP. Ale miesto tam vzdy bolo na nejaky ten "register".


Z80 me jeden problem. Komplexne instrukcie. Setri to pamet ale niektore veci su rychlejsie ked ich robis viac prikazovo ako jednym komplexnim.


Ono je vcelku sranda ze jedine dva 8bit CPU ktore prezili do tychto cvias su tak sialene odlizne. Z80 je ukazka CISC a 6502 zas RISC pristupu.

Autor:  zz_indigo [ 20.08.2013, 15:31 ]
Předmět příspěvku:  Re: Assembler

ObiWanKen píše:
Aj ked len tri registre, daju sa robit zazraky.

http://www.pagetable.com/?p=64

Takze 6502 ma este dlhu zivotnost !!!


no ono 6502 ma vlastne len jeden register a dva indexy. Lebo u 6502 nevies spravit ADC A,X zatial co Z80 vie vecsinu registrou pouzit pri aritmetickych operaciach.

Autor:  zz_indigo [ 20.08.2013, 15:36 ]
Předmět příspěvku:  Re: Assembler

Busy píše:
Takychto pametovych 256 registrov ma aj Z80, dokonca dve sady, a nemusia byt len v prvych 256 bajtoch ram, ale uplne kdekolvek v pameti :neener: Ale zase je pravda, ze nevie s nimi robit tak domyselne adresovacie rezimy a pristup k nim je velmi pomaly (vela taktov) :bang:


K registrom to ma odost dalej ako na 6502. Uz len preto ze indexove registre v 6502 sa pouzivasju ako index "pola" zatial co iX a iY v Z80 sa pouzivaju ako base toho pola. Co podstatne zneprijemnuje pracu. Navyse toto 6502 vie tiez iked opacne. V operande je Base pola a v index registri je index.

p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)

Autor:  Busy [ 20.08.2013, 15:38 ]
Předmět příspěvku:  Re: Assembler

ObiWanKen píše:
To co som zavidel boli 16bit registre. Ktore 65xx nema.

Z80 ma programovo dostupnych dokopy 13 sestnastbitovych registrov a dva bity. Resp. jeden a pol bitu, lebo jeden z nich sa neda programovo citat :)

Autor:  Busy [ 20.08.2013, 15:42 ]
Předmět příspěvku:  Re: Assembler

zz_indigo píše:
Busy píše:
Takychto pametovych 256 registrov ma aj Z80, dokonca dve sady

K registrom to ma odost dalej ako na 6502. Uz len preto ze indexove registre v 6502 sa pouzivasju ako index "pola" zatial co iX a iY v Z80 sa pouzivaju ako base toho pola. Co podstatne zneprijemnuje pracu.
Zalezi od uhla pohladu. Ak mas vyraz [IX+posun] tak mozes IX nazvat base pola a posun nazvat indexom, ale da sa to rovnako dobre aj naopak - IX nazves indexom a posun nazves ako base ;)

zz_indigo píše:
p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)
:D

Autor:  zz_indigo [ 20.08.2013, 15:51 ]
Předmět příspěvku:  Re: Assembler

Busy píše:
ObiWanKen píše:
To co som zavidel boli 16bit registre. Ktore 65xx nema.

Z80 ma programovo dostupnych dokopy 13 sestnastbitovych registrov a dva bity. Resp. jeden a pol bitu, lebo jeden z nich sa neda programovo citat :)


To cislo sa mi nejak nezda. (AF je nepouzitelne, iX a iY su len indexy, PC a SP detto)
a nieje mozne pouzivat registe nakros sadamy ;-) Takze realne pouzitelnych mame 2x3 a to trinast urcite nieje ;-)

AF A'F'
BC B'C'
DE D''E'
HL H'L'
iX
iY
PC
SP

Autor:  ObiWanKen [ 20.08.2013, 16:11 ]
Předmět příspěvku:  Re: Assembler

zz_indigo píše:
p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)

:D


Ak bude vojna tak so mnou nepocitajte.
Vyrastal som na 65xx ale Z80 sa mi ozaj paci. Takze by som sa nevedel razhodnut za ktoru stranu budem kopat !!! :sleep:

A to este Z80 slape na 4MHz (ZX) oproti 1MHZ (C64) alebo 1,77 MHz (Atari). :cry:

Autor:  zz_indigo [ 20.08.2013, 17:17 ]
Předmět příspěvku:  Re: Assembler

ObiWanKen píše:
zz_indigo píše:
p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)

:D


Ak bude vojna tak so mnou nepocitajte.
Vyrastal som na 65xx ale Z80 sa mi ozaj paci. Takze by som sa nevedel razhodnut za ktoru stranu budem kopat !!! :sleep:

A to este Z80 slape na 4MHz (ZX) oproti 1MHZ (C64) alebo 1,77 MHz (Atari). :cry:


A obom je to naprd alebo jedneho brzdi ULA a druheho VIC-II

Frekvencia nieje vsetko:
najdlhsia instrukcia 6502 ma 7 taktou a najkratsia 1 takt
najdlhsia instrukcia Z80 ma vela taktou najkratsia 4 takty.

Preto sa CPU porovnavaju v MIPS-och

6502 ma 1MIPS pri 2Mhz
i8080 ma 1 MIPS pri 6Mhz (Je 3 krat pomalsi)
ARM2 ma 1MIPS PRI 2Mhz
Z80 som nenasiel ale ten by mal vychadzat cca ako i8080
eZ80 ktory je silne zoptimalizovane jadro z80 ma 1.6 na 1Mhz ale to je dane tym zer je to pipeline co je vyssi divci ;-)

je to dane tym ko vnutorne funguje CPU. Cim je jednoduchsi tym menej taktou je potreba aby sa instrukcia prehnala vsetkymi castamy interneho stavoveho registra.

staci si pozriet ako cita/zapisuje Z80 a ako 6502.
U z80 necitanie instrukcie trva 4 takty. dalsi operand 3 takty.
U 6502 to robi za jeden.

Ale i tak je tu uplne jedno. Vhodnym vyberom algoritmu optimalizovanym na platformu je mozne najst implemntacie kde slapsi CPU trunfne silnejsi. Vdaka obmedzeniam architektury.

p.s.
6502 sa robi; v 1/2/3/4Mhz Verzii a tie aktualne od WDC idu do cca 20Mhz iked ich predavaju ako 14Mhz

Autor:  Busy [ 20.08.2013, 17:27 ]
Předmět příspěvku:  Re: Assembler

ObiWanKen píše:
Vyrastal som na 65xx ale Z80 sa mi ozaj paci. Takze by som sa nevedel razhodnut za ktoru stranu budem kopat !!! :sleep:
Ja som zase vyrastal na Z80 ale 6502 sa mi paci ;)
ObiWanKen píše:
A to este Z80 slape na 4MHz (ZX) oproti 1MHZ (C64) alebo 1,77 MHz (Atari). :cry:

ZX bezi na 3.5 MHz, a pokial procesor nepristupuje do pomalej videopameti (alebo na pomaly port), tak ho nic nebrzdi, takze tych 3.5 MHz je skutocne 3.5 MHz. Pokial sa program vykonava v pomalej videpometi, tak realna rychlost je tak v priemere o 30% nizsia. Didaktiky M a Kompakt sice maju Z80 CLK na 4.0 MHz ale tam je uplne cela ramka/romka spomalovana WAIT cyklami (blba konstrukcia ruskej uly) takze realna rychlost je cca 3.4 MHz.

C64 bezi (ak si dobre pametam) na 0.9 MHz.

Autor:  ObiWanKen [ 20.08.2013, 18:23 ]
Předmět příspěvku:  Re: Assembler

zz_indigo píše:
ObiWanKen píše:
zz_indigo píše:
p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)

:D


Ak bude vojna tak so mnou nepocitajte.
Vyrastal som na 65xx ale Z80 sa mi ozaj paci. Takze by som sa nevedel razhodnut za ktoru stranu budem kopat !!! :sleep:

A to este Z80 slape na 4MHz (ZX) oproti 1MHZ (C64) alebo 1,77 MHz (Atari). :cry:


A obom je to naprd alebo jedneho brzdi ULA a druheho VIC-II

Frekvencia nieje vsetko:
najdlhsia instrukcia 6502 ma 7 taktou a najkratsia 1 takt
najdlhsia instrukcia Z80 ma vela taktou najkratsia 4 takty.

Preto sa CPU porovnavaju v MIPS-och

6502 ma 1MIPS pri 2Mhz
i8080 ma 1 MIPS pri 6Mhz (Je 3 krat pomalsi)
ARM2 ma 1MIPS PRI 2Mhz
Z80 som nenasiel ale ten by mal vychadzat cca ako i8080
eZ80 ktory je silne zoptimalizovane jadro z80 ma 1.6 na 1Mhz ale to je dane tym zer je to pipeline co je vyssi divci ;-)

je to dane tym ko vnutorne funguje CPU. Cim je jednoduchsi tym menej taktou je potreba aby sa instrukcia prehnala vsetkymi castamy interneho stavoveho registra.

staci si pozriet ako cita/zapisuje Z80 a ako 6502.
U z80 necitanie instrukcie trva 4 takty. dalsi operand 3 takty.
U 6502 to robi za jeden.

Ale i tak je tu uplne jedno. Vhodnym vyberom algoritmu optimalizovanym na platformu je mozne najst implemntacie kde slapsi CPU trunfne silnejsi. Vdaka obmedzeniam architektury.

p.s.
6502 sa robi; v 1/2/3/4Mhz Verzii a tie aktualne od WDC idu do cca 20Mhz iked ich predavaju ako 14Mhz



Ktory CPU ma kolko MIPS mi nieje zname. Samozrejme ze aj HW berie cas CPUckam.
Osobne si myslim ze ZX je o nieco rychlejsie ako napr. Atari.
Sam som volakedy skusal jednoduchy scrolling Bitmap VRAM (Graphics 8) bez pouzitia HW scrollingu.
Roloval som monochromaticky obraz za pouzitia instrukcii ROL. A tento scrolling bol vyditelne trhany.
Problem s BEAMom aky bol rieseny tu v inej teme pre ZX.
Preto ked si pozriem napr. hru R-TYPE co dokaze bez HW scrollingu a spritov, tak mi vychadza ZX o nieco rychlejsie
ako spominane Atari, samozrejme bez pouzitia Atari HW. Tiez je to poznat pri hre Amaroute, ked sa u Atari verzie
objavy viacej "much" rychlost hry citelne poklesne. A to este ma ZX to sialene rozlozenie VRAM na tretiny.
Iste na to existuje nejaky ten ofajc. Ale na ZX som nikdy nekodoval. Snad len vymazanie VRAM :jump:
Tak ma opravte ak sa mylim :hammer: .

PS. Na C64 sa tiez vysantili v rozlozenie VRAM pri HiRes Bitmap mode (320x200)
.

Autor:  zz_indigo [ 20.08.2013, 19:22 ]
Předmět příspěvku:  Re: Assembler

ObiWanKen píše:
Ktory CPU ma kolko MIPS mi nieje zname. Samozrejme ze aj HW berie cas CPUckam.


No tu zalezi aj ako je to riesene. Napr zx48 ma RAM rozdelenu pomocou HW na dve casti (16K zdielanej medzi ULA a CPU) a zbytok len cpu only vedia byt negraficke programy rychlejsie ak bezia v tejto ramke.

V pripade C64 je pamet spolocna takze si VIC a CPU vzdy konkuruju.

ObiWanKen píše:
Osobne si myslim ze ZX je o nieco rychlejsie ako napr. Atari.
Sam som volakedy skusal jednoduchy scrolling Bitmap VRAM (Graphics 8) bez pouzitia HW scrollingu.
Roloval som monochromaticky obraz za pouzitia instrukcii ROL. A tento scrolling bol vyditelne trhany.
Problem s BEAMom aky bol rieseny tu v inej teme pre ZX.
Preto ked si pozriem napr. hru R-TYPE co dokaze bez HW scrollingu a spritov, tak mi vychadza ZX o nieco rychlejsie
ako spominane Atari, samozrejme bez pouzitia Atari HW. Tiez je to poznat pri hre Amaroute, ked sa u Atari verzie
objavy viacej "much" rychlost hry citelne poklesne. A to este ma ZX to sialene rozlozenie VRAM na tretiny.
Iste na to existuje nejaky ten ofajc. Ale na ZX som nikdy nekodoval. Snad len vymazanie VRAM :jump:
Tak ma opravte ak sa mylim :hammer: .

PS. Na C64 sa tiez vysantili v rozlozenie VRAM pri HiRes Bitmap mode (320x200)
.


porovnavat vykone cpu na zaklade obmedzeni pouzitehio HW je tak trochu nefer. Ale to je to co som spominal. Ak kod zoptimalizujes na dany HW moze byt vykonnejsi na slabsej platfrorme.

Ale IMAO vykonovo su ZXspectrum/commodore64/atary obdobne.

Stránka 27 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/