Registry assembleru: typy, přiřazení a vlastnosti příkazů

Buňky procesoru, které se také nazývají registry assembleru, kvůli nízkoúrovňovému ovládání programovací jazyk představují určitý blok volných prvků v paměti. Jejich charakteristickým rysem je super rychlý přístup do paměti. Nejčastěji se používají registry za běhu příkazů procesoru a programátor není k dispozici. Například během vzorkování ze stávající superrychlé paměti je její kód v binárním systému umístěn do registru podle následujícího čísla příkazu.

Není možné přímo odkazovat na registr. Kromě toho existuje řada dostupných paměťových bloků, je však možné je kontaktovat pouze z prostředí operační systém. Mezi ně patří řídicí segmentové registry i stínové systémy deskriptorů. Tyto registry používají ve své práci výhradně vývojáři OS.

Struktura registrů v assembleru

Druhy registrů

Pro různé potřeby se během programování používají různé registry Assembler. Používají je podle cílů. Například registr čítače se používá k uspořádání jednoduchých i vnořených smyček. Níže jsou uvedeny hlavní typy registrů assembleru:

  • Univerzální registry.
  • Indexové registry.
  • Rejstříky-ukazatele.
  • Segmentové paměťové bloky.
  • Registry vlajek.

Ve skutečnosti všechny registry zabírají v paměti 32 bitů. To znamená, že mohou obsahovat čísla od nuly do 4294967295. Některé registry jsou rozděleny do několika částí 16 a 8 bitů. To vám umožní spravovat buď část bloku paměti, nebo celou buňku a zapisovat do ní pouze část dat.

Příkazy pro správu paměti

Registry assembleru byly pojmenovány podle prováděných funkcí:

  • EAH-Accumulator registru baterie;
  • EBX-Base-základna;
  • ECX-Counter-zodpovědný za náklady;
  • EDX-Data-blok datových buněk;
  • ESI-Source Index-zdrojový registr;
  • EDI-Destination Index - registr přijímače;
  • ESP-ukazatel zásobníku-ukazatel na zásobník;
  • EBP-Base Pointer - ukazatel základny zásobníku.

Vlastnosti použití registrů

Stojí za zvážení, že každý z určených registrů lze použít nejen pro zadávání dat. Například do základního registru můžete zadat libovolné desetinné číslo a použít jej jako čítač. Zároveň je však nežádoucí pro tyto účely používat paměťové bloky, které odpovídají ukazatelům-ESP a EBP, protože mohou nastat problémy s přístupem k buňkám abstraktního datového typu. Účel registrů assembleru-ukládání některých informací, pro které lze použít jakýkoli typ.

Kód na ASM a zobrazení v seznamu

Univerzální registry

Tento typ registrů je vytvořen pro ukládání dat po výpočetních operacích. Ve skutečnosti můžete pomocí příkazu MOV zadat informace v jakékoli formě a systému počtu: binární, osmičkové, desetinné nebo hexadecimální. Jiný název - datové registry assembleru. Seznam univerzálních registrů assembler zahrnuje:

  • EAH (accumulator) akumulační registr. Skládá se ze tří malých bloků po 8 bitech: AH, an, AL. V případě potřeby můžete přistupovat ke dvěma juniorským blokům.
  • Euch – base) - blok dat, který je zodpovědný za databázi. Stejně jako všechny univerzální Registry se skládá ze dvou juniorských oddílů po 8 bitech a jednoho šestnáctibitového oddílu. Tímto způsobem lze do jednoho registru vložit několik číselných hodnot najednou.
  • ECC (counter) - zodpovědný za počítadlo. Používá se při provádění smyček. Bez něj příkaz loop nefunguje. Skládá se ze dvou částí, z nichž jedna zahrnuje dvě osmibitové jednotky ch a CL.
  • EDX-Data-vyžadováno pro operace s přesným určením adresy v paměti RAM pro vstupní a výstupní funkce. Kromě toho lze do tohoto registru umístit data pro přesměrování pro použití v postupech a vzorech. Práce s Registry v 64bitové verzi

Rejstříky ukazatele

Pro práci se zásobníkem v assembleru mají vývojáři dva typy registrů. Pro přístup k nim se provádí operace přidání na vrcholový ukazatel abstraktního typu bitových hodnot konkrétního datového typu, který byl vložen do zásobníku. Všechny výpočty se provádějí ručně. Tímto způsobem je uloženo velké množství dat a předáno do podprogramů-procedur a polí. Mezi rejstříky ukazatelů v assembleru patří:

Struktura procesoru a registrů
  • Registr ESP-ukazatel na vrchol zásobníku. Vždy obsahuje adresu prvního prvku, který byl vložen do zásobníku v mezipaměti procesoru. V případě potřeby může být naplněn jinými údaji. Zahrnuje juniorský registr Sp skládající se ze 16 bitů.
  • Registr EUR (Base Pointer) - je blok paměťových buněk vyžadovaný k adresování dat obsažených v zásobníku. Díky tomu je mnohem snazší přístup ke všem datům a proměnným. Zahrnuje juniorský stupeň BP.

Registry-indexy

Indexové paměťové bloky jsou vyžadovány pro pokročilé indexování. Kromě toho se podílejí na práci některých aritmetických operací a zpracování bajtových řetězců-sekvence bajtů obsahujících libovolnou hodnotu. Assembler obsahuje dva registry, které jsou zodpovědné za indexování ESI a EDI. Popíšeme je:

  • ESI (Source index) obsahuje index zdroje (místo, odkud data pocházejí) a je potřeba pro část akcí na bajtových řetězcích;
  • EDI (Destination index) je vyžadován pro záznam výsledků výpočtu. Používá se také pro část řetězcových akcí. Částečně souvisí s ES segmentovým registrem.

Segmentové registry

Jsou první bloky v paměti. Se nazývají aktuální segmenty. Software může přidělit více než čtyři paměťové bloky. Zároveň je však nutné zadat adresy bloků do paměťových buněk mezi segmentovými registry. Tento typ paměťových bloků je přísně specifický, takže je nemožné je naplnit samostatným typem dat. Pořadí bloků registrů v paměti se může lišit. Ukládání segmentových registrů se provádí v náhodném pořadí na náhodných místech paměti.

  • Registr kódu CS v normální podobě obsahuje počáteční adresu segmentu kódu programové vybavení (začátek strojové reprezentace kódu). Tímto způsobem se provádí přechod příkazů pomocí příkazového ukazatele IP.
  • Datový registr obsahuje adresu dat, která program zpracovává v okamžiku spuštění. Pohyb dat se provádí zkreslením, které je zapsáno do registru EIP.
  • Stack Segment (ESS) je nutný k uložení začátku segmentu abstraktního datového typu.
  • Extra segment-pomocný registr, který obsahuje prázdnou oblast pro zápis dat v čase některé akce nad bajtovými řetězci. Může obsahovat informace podobné datovému registru.

Rejstřík ukazatelů příkazů

Komunikace mezi paměťovými bloky

Tento druh odkazuje na příkaz. Pomocí tohoto ukazatele je výstup registru assembleru uveden na seznam. Zahrnuje údaje o offsetu na následující příkaz vzhledem k předchozímu. Při vývoji softwaru se prakticky nepoužívá, je však nutné zobrazit výpis spuštění kódu. Tímto způsobem sledovat chyby.

Registr příznaků assembleru

Odpovídá za aktuální stav centrálního procesoru. Skládá se ze 16 bitů, z nichž může být obsazeno pouze 9. Vyplnění daného bloku paměti se provádí po provedení, přeskočení nebo chybovém kódu v důsledku předchozího příkazu. Část bitů je navíc používána procesorem a může být inicializována a odstraněna prostřednictvím konkrétního příkazového systému. Tímto způsobem je řízen příkazový systém.

Články na téma