Commodore-ok/ZX-ek jó gépek lennének?
GPT:
A Commodore számítógépek memóriacímzése általában relatív címzést használt. Ez azt jelenti, hogy a programok a memória egy bizonyos területére hivatkozhattak a saját futási környezetükön belül, és nem feltétlenül kellett figyelembe venniük a fizikai memória címeket.
1. **Relatív címzés**: A programokban a címek gyakran a program kezdeti címétől viszonyítva voltak megadva, ami rugalmasabbá tette a kódot, különösen a különböző memóriaelrendezések esetén.
2. **Abszolút címzés**: Azonban voltak olyan helyzetek, ahol abszolút címzést is használtak, például a rendszerregiszterek elérésénél vagy specifikus perifériák vezérlésénél.
Összességében a Commodore rendszerek a relatív címzést preferálták a programozási rugalmasság érdekében, de az abszolút címzés is jelen volt bizonyos alkalmazásokban. Ha további részleteket szeretnél, csak szólj!
További részleteket szeretnék! :)
A ChatGPT ezt mondta:
ChatGPT
Rendben, nézzük meg részletesebben a Commodore számítógépek memóriacímzését, a relatív és abszolút címzés különbségeit, és hogy ezek hogyan működtek a gyakorlatban!
Relatív címzés
Programozási rugalmasság: A relatív címzés lehetővé tette, hogy a programok rugalmasan hivatkozzanak a memória címekre. Például, ha egy program 0x0100 címtől indul, a benne található utasítások a program kezdetéhez viszonyítva hivatkoznak címekre (pl. 0x00FF a 0x0100-hoz képest a -1 relatív címet jelenti).
Könnyebb betöltés: Ez megkönnyítette a programok betöltését különböző memóriahelyekre, mivel a programok nem voltak fix címekhez kötve, hanem a környezetükhöz viszonyítva tudtak működni.
Funkciók: A relatív címzés gyakran használt a ciklusok és ugrások esetén, ahol a program nem abszolút címeket használt, hanem a jelenlegi utasítás helyéhez viszonyítva határozta meg az ugrás célját.
Abszolút címzés
Specifikus perifériák és regiszterek: Az abszolút címzés lehetővé tette a programok számára, hogy közvetlenül hivatkozzanak a memória specifikus területeire, például a grafikus vagy hangregiszterekre. Például, ha egy programnak közvetlenül a képernyőre kell írnia, akkor abszolút címeket használt a memória megfelelő területeinek elérésére.
Korlátai: Az abszolút címzés kevésbé rugalmas, mivel a programokat egy adott memóriaelrendezéshez köti, így a programok áthelyezése vagy módosítása bonyolultabbá válhat.
Példák a címzésre
Relatív címzés példája: Ha a program a 0x0200 címről indul, és egy ugrás utasítást használ, ami 10 bájttal előre ugrik, akkor az ugrás célja 0x020A lesz (0x0200 + 0x000A).
Abszolút címzés példája: Ha egy programnak a grafikus memóriához (például 0xD000) kell írnia, akkor közvetlenül azt a címet kell megadnia, függetlenül attól, hogy a program hol fut.
Összegzés
A Commodore rendszerek memóriacímzése jól kombinálta a relatív és abszolút címzést, lehetővé téve a programozók számára, hogy optimalizálják a kódot a memóriahatékonyság és a rugalmasság érdekében. Ez a megközelítés hozzájárult ahhoz, hogy a Commodore számítógépek népszerűek legyenek a játékok és alkalmazások fejlesztésében a 80-as években.
Ha van további kérdésed vagy specifikus részlet, amire kíváncsi vagy, nyugodtan írd meg!
#24-nek:
Olvastad azt a GPT oldalán, hogy a GPT tévedhet? 🤣
Ekkora baromságot ritkán látok! Erre is csak egy idióta gép lehet képes!
Javaslom hogy olvasgass kicsit, és ha nem értesz valamit, nagyon szívesen segítek! Tudod, vannak bizonyos fogalmak amik a Commodore idejében teljesen mást jelentettek, mint manapság!
file:///C:/Users/Admin/Desktop/Gepi_kodu_programozas_a_C64-esen[robo64].pdf
Oké! Igazad van! Közvetlenül címezhető volt az egész memória, és mivel nem voltak szegmensek, nem voltak bennük relatív címek.
De a processzor a programodban nem címre ugrott, hanem a címedtől kiszámolt távolságra.
Így már helyben hagyod?
"Összegzés
A Commodore rendszerek memóriacímzése JÓL KOMBINÁLTA a relatív és abszolút címzést, lehetővé téve a programozók számára, hogy optimalizálják a kódot a memóriahatékonyság és a rugalmasság érdekében. Ez a megközelítés hozzájárult ahhoz, hogy a Commodore számítógépek népszerűek legyenek a játékok és alkalmazások fejlesztésében a 80-as években."
Még egyszer.
#31.-oldal:
"Mivel azt is tudatnunk kell a processzorral. hogy melyik utasításra adtuk a vezérlést, ezeknek az utasításoknak tartalmazniuk kell még egy operandust, az ugrási címet, amely egy 16 bites érték. Így a feltételes ugrási utasítások három byte-ot foglalnának el: egy byte-ot az
utasításkód, kettőt pedig az ugrási cím. Minthogy azonban az ugrások általában kis távolságra vonatkoznak, kidolgoztak egy olyan címzésmódot, ami feleslegessé teszi a két byte-os ugrási elmeket Ez az ún. relatív címzés."
A Commodore esetében az alapeset volt az abszolút címzés, és amúgy lehetőség volt a relatívra is, de csak korlátozott módon. Az alap ugrási utasítás a JMP és a JSR volt. A JMP sima ugrási utasítás volt, a JSR pedig szubrutin-hívó. A meghívott címtől addig futott amíg RTS kódot nem talált, utána visszatért a kiindulási pontra, és onnan futott tovább. Mindkettőt lehetett 0 laposan vagy abszolút módonis címezni, de relatívan egyiket sem. Gyakorlatilag a Commodore nem ismert feltétel nélküli ugrást relatív címzéssel.
És nem kötök kompromisszumot, az ugrás kivitelezésének kérdésében. A processzor az UTASÍTÁS-SZÁMLÁLÓBAN tárolt címen futott, ami ABSZOLÚT cím volt. 16. oldal a linkemben.
A microprocesszor eleve abszolútan címzett MINDENT, a relatív lehetőség egy érdekes kiegészítés volt egy abszolút processzoron.
Megjegyzem ismét, hogy én programoztam assembly-ben, Commodore-on. Qrvára lexarom hogy szerinted azok CSAK könyvek. Azokból tanultam, és az azokból tanultakból programoztam. Te meg jössz nekem a GPT baromságaival. 🤣
Pfff ...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!