OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 24.04.2024, 20:49

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 16 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 09:28 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Pro 8 bitový releový počítač hledám inspiraci pro výpočty v 32 FP

- jaké instrukce by byly vhodné
- vešlo by např. násobení do 200 Byte kódu?

i za cenu nějakých omezení

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 09:53 
Online
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3827
Has thanked: 280 times
Been thanked: 457 times
A není 8bitový reléový počítač na 32bit floating point trochu málo, Lve Ivanoviči?:-) Byť všechno násobení je vlastně jen sčítání a posuvy registrů... Asi by bylo vhodné zmínit jak velký registr používáš, kolik jich je a kolik paměti pro data a program budeš mít? Program instrukce plánuješ dát do ROM nebo do RAM (ať už to bude cokoliv...). Možná bych si přečetl strany 156 - 162 knihy Porty Bajty Osmibity od Martina Malého, je na internetu zdarma k dispozici. Tam se násobením a jeho možnými způsoby na úrovni assembleru zabývá. Předpokládám že to chceš řešit softwarově, drátovat ty funkce natvrdo hardwarově, to už by byla vyšší dívčí na stovky a tisíce relátek :-).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 10:54 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Nevím co je míněno registrem, ale HW možnosti jsou: 8 bit, 192B ROM a 64B RAM

Mrknu na tu literaturu.

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 11:11 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1976
Bydliště: Most, Praha
Has thanked: 873 times
Been thanked: 699 times
Potřebuješ k tomu základní operace vícebajtový posun o bit, integer sčítání, odčítání a komparaci. Např. pro FP součet porovnáš exponenty a normalizuješ je na stejnou hodnotu (=rotace mantisy dolů u čísla s menším exponentem), pak součet mantis a příp. oprava přetečení mantisy do vyššího řádu. U násobení se sečtou exponenty a mantisy se vynásobí jako integer (=pomocí bitových posunů + přičtení při bitu 1). U dělení se odečtou exponenty, mantisy se zkorigují aby dělenec byl větší, vydělí se mantisy jako integer (pomocí bitových posunů).

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 11:39 
Online
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3827
Has thanked: 280 times
Been thanked: 457 times
Mě přijde (byť jen pocitově) že to nebude na takové operace stačit. Naprogramuješ sotva pár základních funkcí a dojde ti paměť pro program samotný. Tu ROM bych doplnil o děrnou pásku či štítky (nebo něco co je bude emulovat) protože ani v nejdřevnějších dobách se to bez externí a dostatečně velké paměti neobešlo. Myslím že bys měl jít cestou ne-von neumanovské architektury protože to technicky v tak malém rozsahu není možné. I Eniac byl sbírka spousty jednoúčelově zapojených panelů, které teprve dohromady daly dost flexibility aby na tom vůbec mohl běžet program a program byl externí.

S takovými schopnostmi bys mohl tak leda provádět jednu dvě základní matematické operace. 64 bajtů je tak akorát na dvě čísla, mezivýsledek kroku a finální výsledek.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 11:41 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Pěkně shrnuto, díky.

Komparace, asi <, > a =
= test na Z,

a ty <> pomocí odčítání a flag C

sakra to naskakuje délka kódu, napřed uložit, pak odečíst, vyhodnotit a zas obnovit. Minimálně 7 Bajtů kódu

push a
ld b, X
sub b
pop a
jp z
jp c

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Naposledy upravil microlan dne 20.01.2020, 11:44, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 11:43 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Pásku jsem zavrhnul, z důvodu "neskokovosti"

64B je na 16 32b hodnot

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 12:18 
Online
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3827
Has thanked: 280 times
Been thanked: 457 times
Mě přijde že myslíš technologicky moc dopředu na to co to má být a co to bude umět. Nemůžeš na to aplikovat moderní pohled na počítače, byť z roku1945 :lol:.

Myslím si že je to takhle tak akorát na 2 čísla, program co s nimi udělá jednu jednoduchou operaci a uloží výsledek. Assembler je tu ještě příliš vysoká programovací řeč, s tímhle budeš stejně mluvit binárně. Jestli máš problém s páskou, tak přidej ROM destičky :-). ENIAC se tak nejdříve programoval.

Obejít to může Non von-neuman přístup - tedy že máš program krok za krokem na pásce a v paměti jen data se kterými pracuješ. OS není žádný. A ty nejzákladnější operace a funkce definované asi nejlépe v té ROM. Problém je s tím že každá změna v programu = změna pásky. Proto bych doporučil vyrobit nějaký raspberry pi emulátor vstupu z pásky do relátek, tam si můžeš s programem hrát a není obtížné ho změnit a programovat abys byl schopný s tím něco vůbec dělat než tě to přestane bavit. Tehdy nejhorší fáze nebylo to poskládat dohromady ale odladit program aby běžel a dostat ho funkčně do počítače. To trvalo týmům lidí i týdny.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 13:47 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3671
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
microlan píše:
Pro 8 bitový releový počítač hledám inspiraci pro výpočty v 32 FP
Mozes sa inspirovat napriklad komentovanym vypisom ZX romky, kde su FP operacie velmi dobre popisane. Pracuju nad cislami s 8-bit exponentom a 32-bit mantisou.

Scitanie dvoch FP cisel: #3041
Nasobenie dvoch FP cisel: #30F0
Delenie dvoch FP cisel: #31AF

Odcitanie je robene invertovanim znamienkoveho bitu a scitanim, rozne vedecke funkcie su robene pomocou tychto troch zakladnych operacii.
Pre samotne scitanie potrebujes 32-bitovu rotaciu ktorou sa mantisa mensieho cisla "zrovna" s mantisou vecsieho cisla (aby boli rovnake exponenty) a nasledne sa mantisy 32-bitovo scitaju. Nasobenie je klasicke bit-shift, jedna mantisa sa rotuje a druha sa podla bitu z prvej pripocitava k vysledku. Pri deleni sa jedna (zase) rotuje a druha od nej odpocitava. Takze idealne je mat instrukcie na bitove posuny, scitanie a zapornu hodnotu pre 32-bitove cisla. Porovnavanie sa da urobit odcitanim, ktore nezapise vysledok a odcitanie scitanim zapornej hodnoty.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 13:53 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Citace:
8-bit exponentom a 32-bit mantisou.


a znamínko je v 6. Byte?

//Ale dík za tip, mrknu na to

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 15:05 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1976
Bydliště: Most, Praha
Has thanked: 873 times
Been thanked: 699 times
Číslo má celkem 5 bajtů, s přesností 8 platných číslic. První bajt je binární exponent s přičteným offsetem 128. Následují 4 bajty mantisy od nejvyššího řádu k nejnižšímu. Znaménko je v 7. bitu prvního (nejvyššího) bajtu mantisy. Na tom samém bitu je skrytý nejvýznamnější bit "1". Během operací se znaménkový bit uchová (mantisa se rozšíří o 1 bit) a na jeho místo se doplní zpět skrytá "1".

Ale lepší mohou být FP operace ZX81, protože Spectrum doplňuje float formát integer čísly - v případě že je exponent nula, obsahuje mantisa 16-bitové integer číslo. Pokud vyjdou operace snáz s integer čísly, provede přednostně integer operaci. U ZX81 se tohle nedělalo, používal se jen čistý float a tak to může být snazší na implementaci.

V ROM ZX81:
sčítání: #1755
násobení: #17C6
dělení: #1882

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 15:25 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
No prosím, 113 B na sčítání, ale určitě tam bude spousta CALLů, takže se to taky asi nevejde

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 15:31 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1976
Bydliště: Most, Praha
Has thanked: 873 times
Been thanked: 699 times
Pokud se Ti podaří implementovat alespoň integer násobení a dělení, tak s tím už se dají realizovat číselné řady s pevnou desetinnou tečkou.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 15:36 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1493
Bydliště: Kósek vod Brna
Has thanked: 101 times
Been thanked: 112 times
Přemýšlím o HW 8b komparátoru, čímž by se možná zkrátil kód, 3 signály: a>b, a<b, a=b

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: 32bit FP v assembleru
PříspěvekNapsal: 20.01.2020, 18:29 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2788
Has thanked: 230 times
Been thanked: 608 times
microlan píše:
Pásku jsem zavrhnul, z důvodu "neskokovosti"
To je otázka krokového mechanizmu, Babbageův Analytical Engine (by) uměl skákat dopředu i dozadu. Ale tam to bylo jednodušší, protože šlo o pás karet.

A musí to být mocí mermo floating point? U starých strojů se používal fixed point, třeba pro Minsk 22 výrobce dodával celou sadu podprogramů pro výpočty v pevné řádové čárce, pěkně vytištěné v příručce ;-)

Jinak pro komparátor můžeš elegantně využít samotnou sčítačku. Já jsem v TWELVE měl původně vymyšlený samostatný komparátor, nádherný symetrický 2*dvanáctibitový totem, který měl tři výstupní signály, LESS, EQUAL a GREAT. A když jsem to měl celé hotové a přemýšlel jsem jak to tam zapojit, tak mi teprve došlo že to je blbost a udělal jsem to stejně jako v Z80, přes předstírané odečítání! Teda s tím rozdílem že nemám příznaky ZERO a SIGNUM, takže si je virtuálně porovnávám s dvoubitovou maskou v instrukci, a pokud se neshodují, vyleze z toho modifikující signál STEP. Samotný komparátor je těch pět hradel do oblouku úplně dole v ADDERu: https://www.oldcomp.cz/viewtopic.php?f=75&t=5918&p=76873#p76873

Czech Human píše:
Porty Bajty Osmibity od Martina Malého, je na internetu zdarma k dispozici.
Je k dispozici v každém dobrém knihkupectví, já jí koupil nedávno na Hlavním nádraží v Luxoru. A jinak samozřejmě volně ke stažení přímo na webu vydavatele, i s jeho předchozí knihou, Hradla, volty, jednočipy: https://knihy.nic.cz/

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 16 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 9 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz