OldComp.cz

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


Právě je 28.03.2024, 21:28

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 87 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6  Další
Autor Zpráva
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.11.2016, 19:33 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
hynek:
No já mám menši aplikaci (hudební rutinku) a tam stačí skok v rozsahu jednoho wordu. Akorát jsem dokončil základní logiku v rámci optimalizace jedné části kódu. Tá logika je zatím jen napsaná a neodzkoušená, ale když na to koukám, možná by to mohlo i fungovat. Pro optimalizaci jsem nenavýšil počet potřebných adresových registrů než je v odzkoušené a funkční neoptimalizované verzi, pro danou část jsou potřebné 2 registre, zatím jsem použil datové a čas ukáže s čím si ještě pohraji. Mám radost hlavně z registru D2, ze kterého jsem kombinaci swapu a rotací bitů využil 28 bitů z celkových 32 bitů. Sice 4 bity zůstali ale v rámci prvních hrátek s optimalizací to považuji za hezký výsledek. D3ka tak trochu zívá prázdnotou, ale něco potřebné v ní taky je :). Část kódu jsem kromě jiného i trochu vylepšil a naučil, co bude potřebovat. Ták a těd mi to vše nebude fungovat a udělal jsem to vše na hovno :) Přinejhorším jsem se opět procvičil, odzkouším a budu se hrát opět jindy a když budu nadržený tak i dnes, ale již to opět malinko přeháním :).

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.11.2016, 19:40 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Lanex píše:
Občas jsem z tvých dotazů trochu na vážkách, o co ti vlastně v nich jde :lol: nic ve zlym samozřejmě...

V pohodě :mrgreen:
No o nic podstatné mi většinou v nich nejde, většinou o maličkosti a v nich o to, co je správnější, když jsou možné obě varianty a třeba varianta subrutinky, která má 2 řádky mi přijde trochu přitažená za vlasy, ale přeci jen třeba v kódu v rámci textu, nebavme se teď o ničem jiném než o kódu v textu mi ušetří 1 řádek, krom toho, že mi BSR třeba zabere další minimálně 2 byte navíc, protože ty 2 swapy se musí vykonat tak, či tak :)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 03.11.2016, 01:37 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Tak po pár úpravách velice ranní test ukazuje, že nová verze části kódu pro výběr frekvence v mé hudební rutině funguje. Nová část kódu se asi dá ještě zjednodušit, ale pokud tam fakt nemám chybu, to hlavní vymyšleno již je! Ještě to nemám dotažený dokonce, ale již jsem mohl zahrát 2 různé frekvence a ty se zahráli. Kromě kompletního přepsání původní části kódu si teď můžu určovat rozestupy mezi jednotlivými periodami a to tak, že při programové změně nejvyšší frekvence se mi všechny ostatní nižší frekvence správně nastaví sami vůči té nejvyšší frekvenci. No nic opravdu již příště budu testovat, doprogramuji a budu doufat, že to mám vše zatím OK :)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 09.05.2017, 03:00 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Z knihy Assembler 68000 od Vlastimila Krále

8.3 Vícenásobné větvení programu

8.3.2 Řešení pomocí „ON x GOSUB“ (příkazy z Basicu do Assembleru)

Vytažení toho podstatného + malá úprava


Přílohy:
likvidaceHousenky.jpg
likvidaceHousenky.jpg [ 45.94 KiB | Zobrazeno 8908 krát ]

_________________
Amiga - PMD 85
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 01.01.2021, 20:59 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Drobátko nuda, neboli programování teď ne, již jsem nasicen. Tak zkusím jinak. Relaxačně si psát o logice a se něco zeptat? ADD je pomalé, to jsem slyšel. Ten součet se dělá po 1 bitě? Když jsem v situaci, kdy potřebují zvýšit pointer v paměti o 4 byte aniž bych potřeboval načítat jakékoliv data. Vyhnout se ADD a použít instrukcí, která pracuje v rozsahu byte a ne bite, která načte data z pointeru, jen je nevyužiju? Ale tahle instrukce i navýší adresu pointeru v paměti co potřebuji. Já pak ani ty data záměrně nezpracuji a jen je dám do volného registru, protože je již zpracované mám. Jen jsem ve své době v programu nevěděl, jestli se něco bude vykonávat. Ty data jsou již i zpracovaná pomocí AND a já takhle v tom místě, na které se ptám alespoň AND nemusím použít... Jedná se zde o všeobecnou logiku. Nemusí se tedy v rámci zkušenosti jednat o ASM na Amize. Zde je ta druhá odresace vůči ADD.
MOVE.L (A0)+,D0.
Tím, že se použije Long, se data na adrese v paměti, která je uložena v A0 nakopírují v rozsahu Longu do D0, a adresa pointeru v paměti se navýší o Long, tedy 4 byte. Anebo mám použít to ADD. ADD bude asi kratší, ale o to mi nejde, jde mi o rychlost. Počet použitých instrukcí u obou verzí je stejný. Pardon za ty mé termíny, snad mi bude rozumět co mám na mysli :)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 01.01.2021, 22:02 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
ADDQ.L #4,A0 ;pre hodnoty 1 až 8


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 01.01.2021, 22:15 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
To se zvýší adresa pouze o 4 bite, ne o 4 byte co potřebuji.

Ano Q je v rozsahu 3 bite, tedy číslo 1 až 8.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 01.01.2021, 22:29 
Offline
Kecálek

Registrován: 07.05.2014, 12:10
Příspěvky: 197
Bydliště: Jbc
Has thanked: 0 time
Been thanked: 39 times
Lisiak4 píše:
To se zvýší adresa pouze o 4 bite, ne o 4 byte co potřebuji.

Nejak nechapu tuto vetu...
Vysledna hodnota registru A0 vsak bude po obou instrukcich stejna.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 01.01.2021, 22:35 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Nejbližší věta k tomu co jsi napsal je:
Počet použitých instrukcí u obou verzí je stejný.

Ta věta má ale jiný význam, než to co jsi napsal. Pořád ji není rozumět?

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 01.01.2021, 22:37 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
To bylo myšleno tak, že počet instrukcí u obou možných variant, tedy
1) použití MOVE.L
2) použití ADD
je stejný

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.01.2021, 22:07 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 20:32
Příspěvky: 457
Bydliště: Kladno
Has thanked: 46 times
Been thanked: 118 times
Addq #4,A0 bude nejspíš rychlejší než move.l (A0)+,D0, pokud nepotřebuješ načítat obsah (A0) do D0. Addq je dvoubajtová instrukce, move.l je dvou+čtyřbajtová, tedy 3x pomalejší.

_________________
>>eLeMeNt, MB03+, Amiga 1200, ZX Spectrum 128 +2A, ZX Spectrum+, Didaktik Gama, LnxSpectrum, LnxTracker, LnxAmigaImageConvertor, https://www.ilnx.cz <<


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.01.2021, 22:41 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
ADDQ nemůžu použít, budu skákat 32 bitů, tedy 4 byte.
I tak je ADD vůči MOVE.L (A0)+, D0 rychlejší?

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.01.2021, 22:53 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Má vlastně posunutí adresy v paměti o 4 bity zásadní využití? Já fakt nedělám na žádném 1KB intru :)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.01.2021, 23:23 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 20:32
Příspěvky: 457
Bydliště: Kladno
Has thanked: 46 times
Been thanked: 118 times
Move.l (A0)+,D0 ti zvýší A0 o 4. Co ti brání použít rychlejší addq.l #4,A0 ?

PS: addq.l pracuje se všemi 32 bity v A0. Jediný rozdíl od addi.l je že připočítávaná hodnota musí být v rozmezí 1-8.

_________________
>>eLeMeNt, MB03+, Amiga 1200, ZX Spectrum 128 +2A, ZX Spectrum+, Didaktik Gama, LnxSpectrum, LnxTracker, LnxAmigaImageConvertor, https://www.ilnx.cz <<


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Amiga Assembler 68000/020
PříspěvekNapsal: 02.01.2021, 23:56 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Omlouvám se, zmátli mne hodnoty v debuggeru, kde v registru v rámci adresy se pripocitaji 4 bity, ale v reálu se skočí o 4 byte. Ach jo, opět jsem za pitomce.

_________________
Amiga - PMD 85


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ů: 87 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6  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 8 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:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz