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).
Hmm, 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()?
Nejde 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.
To 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.
Dobrý 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í.
hehehe dobre
a dukaz podobny tomuto http://spectrum.ieee.org/image/57489 by nebyl? :-)