Adresování je implementace odkazu (odkazu) na zařízení nebo datový prvek na jeho adrese [1] ; vytvoření korespondence mezi sadou objektů stejného typu a sadou jejich adres; způsob identifikace polohy objektu [2] .
Instrukce nesmí obsahovat explicitní instrukce o operandu ; v tomto případě je operand implikován a ve skutečnosti specifikován operačním kódem instrukce.
Instrukce nemusí obsahovat explicitní údaje o adrese operandu účastnícího se operace nebo adrese, na kterou by měl být umístěn výsledek operace, ale tato adresa je implicitní.
Instrukce neobsahuje adresu operandu, ale operand samotný. Při přímém adresování není vyžadován žádný přístup do paměti pro načtení operandu a umístění v paměti pro jeho uložení. To pomáhá zkrátit dobu provádění programu a množství paměti, které zabírá. Přímé adresování je vhodné pro ukládání různých druhů konstant.
Adresa se zadává přímo jako nějaká hodnota, všechny buňky jsou umístěny na jedné stránce. Výhodou této metody je, že je nejjednodušší a nevýhodou je, že šířka univerzálních registrů procesoru musí být minimálně stejně široká jako šířka adresové sběrnice procesoru .
U tohoto způsobu adresování je prováděcí adresa definována jako součet adresového kódu instrukce a základní adresy, obvykle uložené ve speciálním registru - základním registru.
Relativní adresování umožňuje poskytnout přístup do libovolné paměťové buňky s menší délkou adresového kódu instrukce. K tomu se volí počet bitů v základním registru tak, aby bylo možné adresovat libovolnou buňku hlavní paměti, a adresový kód instrukce slouží k reprezentaci pouze relativně krátkého „offsetu“. Offset určuje pozici operandu vzhledem k začátku pole daného základní adresou.
Pole adresy řídicího slova obsahuje pouze nejméně významné bity adresované buňky. Další indexový registr .
Adresování registru je speciální případ zkráceného adresování. Používá se při ukládání mezivýsledků do jednoho z pracovních registrů centrálního procesoru. Protože registrů je mnohem méně než paměťových buněk, může pro adresování stačit malé adresní pole.
Poprvé bylo při programování na MESM použito nepřímé adresování 2. ranku ( ukazatele ) [3] . Přidání do příkazu s hodnotou adresy operandu "0" hodnoty paměťové buňky, ve které se nachází adresa požadovaného operandu, umožnilo použít tyto paměťové buňky jako hodnoty adresy, tzn. ukazatele na adresy operandů.
Nepřímé adresování vyšších řádků bylo poprvé zavedeno v programovacím jazyce Address (1955) [4] [5] a implementováno do hardwaru v počítači "Kyjev" [6] . V příkazovém systému počítače "Kyjev" je F-operace, která umožňuje snížit hodnost adresy, tzn. provádět "operaci pomlčky" nebo dereferencovat ukazatel a operace modifikace skupinové adresy [5] [6] umožnily provádět vícenásobné směrování ukazatelů v hardwaru.
Adresový kód příkazu v tomto případě neudává adresu s daty, ale adresu paměťové buňky, ve které se adresa operandu nebo příkazu nachází. Toto je adresa 2 nebo ukazatele . Nepřímé adresování je široce používáno v malých a mikropočítačích, které mají krátké strojové slovo, aby se překonala omezení formátu krátké instrukce (registrované a nepřímé adresování se používají společně).
Efektivita výpočetních systémů určených pro zpracování dat se zvyšuje, pokud je možné provádět operace se slovy proměnné délky. V tomto případě může stroj zajistit adresování slov s proměnnou délkou, což se obvykle realizuje tak, že se v instrukci specifikuje umístění začátku slova v paměti a jeho délka.
Zásobníková paměť, která implementuje bezadresné přidělování operandů, je zvláště široce používána v mikroprocesorech a minipočítačích .
Protože nepřímé adresování registru vyžaduje, aby byl do registru předem nahrána nepřímá adresa z paměti RAM, což je spojeno se ztrátou času, je tento typ adresování zvláště účinný při zpracování pole dat, pokud existuje mechanismus pro automatické zvyšování nebo snižování obsah registru při každém přístupu. Tento mechanismus se nazývá auto-increment a auto-decrement adresování. V tomto případě stačí do registru jednou načíst adresu prvního zpracovávaného prvku pole a pak při každém přístupu k registru se v něm vytvoří adresa dalšího prvku pole.
Při automatickém přírůstkovém adresování se obsah registru nejprve použije jako adresa operandu a poté se zvýší o počet bajtů v prvku pole. Při automatickém dekrementování adresování je obsah registru specifikovaný v příkazu nejprve dekrementován o počet bajtů v prvku pole a poté použit jako adresa operandu.
Auto-increment a auto-decrement addressing lze považovat za zjednodušenou verzi indexování, velmi důležitý mechanismus pro převod adresových částí příkazů a organizování výpočetních cyklů, proto se často nazývají auto-indexing.
Pro počítačem implementované metody řešení matematických problémů a zpracování dat je charakteristická cyklická povaha výpočetních procesů, kdy jsou stejné procedury prováděny na různých operandech uspořádaných v paměti. Protože operandy zpracovávané během opakování smyček mají různé adresy, bez použití indexování by bylo nutné pro každé opakování sestavit vlastní sekvenci instrukcí, které se liší v adresových částech.
Programování cyklů je značně zjednodušeno, pokud je po každém provedení cyklu zajištěna automatická změna odpovídajících příkazů jejich adresových částí podle umístění zpracovávaných operandů v paměti. Takový proces se nazývá modifikace instrukce a je založen na schopnosti provádět aritmetické a logické operace s kódy instrukcí.
operačních systémů | Aspekty|||||
---|---|---|---|---|---|
| |||||
Typy |
| ||||
Jádro |
| ||||
Řízení procesů |
| ||||
Správa a adresování paměti |
| ||||
Nástroje pro načítání a inicializaci | |||||
skořápka | |||||
jiný | |||||
Kategorie Wikimedia Commons Wikibooks Wikibooks |