Teď budu trošku offtopic, ale zajualo mne programování s vícero zásobníky. Nejde mi teď o klasická vlákna, procesy, nebo volání jádra, ale čistě o programovací techniky založené na tom, že kontext výpočtu mám v separátním zásobníku. Normálně o tom mnoho lidí neví, když se zeptám tady po okolí, kde se to programátory jen hemží, tak se ozvou jen pythoňáci, a to jen proto, že používají generátory. Céčkaři ani javascripťáci budou koukat jako puk. (A přitom podporu na to najdeme jak v Linuxu tak ve Windows ... ale je potřeba jít až na úroveň low-level knihoven).
Názory k článku
Osmibitové mikroprocesory a mikrořadiče firmy Motorola (1)
Programování s vícero zásobníky
celé vláknoRe: Programování s vícero zásobníky
celé vláknoTak treba pro implementaci koprogramu (coroutines) se da pouzit vic zasobniku (pokud tedy vynecham klasicky Forth a podobne jazyky, jako je napriklad funkcionalni Joy).
Re: Programování s vícero zásobníky
celé vláknoHmm, ale teď tedy moc nechápu, na co by to měli znát javascripťáci, ti jsou snad od takových detailů hodně odstíněni ne? Teda znát by to mohli ti starší, u mladších - těch co se živý JavaScriptem - pochybuji, že vůbec chápou jak pracuje takový CPU :-)
Céčkaři ve skutečnosti taky klasického zásobníku moc neužijí, tam se používají zásobníkové rámce, což je sice na jednu stranu zásobník, na stranu druhou ovšem využívaný poněkud neortodoxně přímým přístupem s relativním adresováním (nahoru od BP jsou parametry, dolů od BP lokální proměnné - nebo naopak, podle toho, jak kdo chápe směr "nahoru" a "dolů" :-) Nebo máš na mysli něco na způsob alloca()?
Re: Programování s vícero zásobníky
celé vláknoNejde mi o nic takového. Jde mi o kontext vykonávaní programu. Stav programu je často definován pozicí v programu a callstackem, tedy seznamem volajících podprogramů.
A teď si představte, že můžete mezi těmito callstacky přepínat, ale nejde o žádnou emulaci vláken. Jde o programátorskou techniku, kdy třeba napíšete iterátor vy procházíte normálně třeba v cyklu prvky nějaké kolekce, a přitom ten iterátor ty prvky prochází rekuzivně ve vlastním callstacku a při každým next() se přejde z jednoho callstacku do druhého a zase zpět.
Prostě jako by to byly dvě vlákna, akorát synchroně bez nutnosti je zastavovat a synchronizovat.
6809 CISC?
celé vláknoMěl jsem vždycky zato, že 6809 je považován za RISC procesor...
Re: 6809 CISC?
celé vláknoTo zalezi na definici RISCoveho procesoru :-)
RISCove procesory maji vetsinou operace s pameti omezene pouze na instrukce typu LOAD a STORE, tim padem i velky pocet pracovnich registru (32, 64, popr. posuvna registrova okna) a vetsina instrukci byva provedena v konstantnim poctu taktu.
Nic z toho pro 6809 neplati, ta dokaze podobne jako 6800 i 6502 (i ten se nekdy oznacuje za RISC) pracovat primo s operandy v pameti (INC, BIT atd.) a pracovnich registru je pouze absolutni prakticke minimum.
Ale faktem je, ze samotny pocet instrukci je dost zmensen, prave diky pouziti ruznych adresnich rezimu.
Visualizovaná simulace 6502
celé vláknoDobrý den, možná by se sem docela hodil tenhle odkaz: http://visual6502.org/ .
Jinak děkuji panu Tišnovskému za jeho seriál článků -- vždy krásné, s nadhledem podané, nostalgické čtení.
Re: Visualizovaná simulace 6502
celé vláknoDiky za odkaz, ten HW simulator maji opravdu pekne udelany. Je videt, ze 65 nula dvojka je stale popularni ;-)
Diky
celé vláknoA prosim, pokracujte. :-)
a rovnačka v roce 3500
celé vláknoPodle mých výzkumů bude procesor Z80 použit v roce 3500 na rovnací
robot, na to co se v roce 3000 zohýbalo.
Nazdar.
Re: a rovnačka v roce 3500
celé vláknohehehe dobre
a dukaz podobny tomuto http://spectrum.ieee.org/image/57489 by nebyl? :-)

