Uživatelské nástroje

Nástroje pro tento web


pitel:isz:asembler

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.


pitel:isz:asembler [30. 12. 2022, 13.43:01] (aktuální) – vytvořeno - upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== Programování v jazyku symbolických instrukcí ======
 +Je to docela dobře vysvětleno v [[https://wis.fit.vutbr.cz/FIT/st/course-files-st.php/course/IAS-IT/texts/Zboril-oporaIAS-ESF-4.pdf|opoře]].
 +===== Činnost počítače =====
 +Viz [[princip_cinnosti_pocitace|7. otázka]]
  
 +Pro tuto otázku postačí: procesor podle pointeru na instrukci tuto instrukci načte. Zjistí o jakou jde. Zjistí, kde jsou operandy a pak provede instrukci. K dispozici má při vykonávání instrukcí systémové registry. Mezi důležité registry, které může procesor používat při výkonu instrukce, patří střadač (A) a čítač (C).
 +
 +Registry bývají 32bitové (E, jako extended na začátku), jejich spodní polovina je pak bez onoho E na začátku. Tato 16bitová část se pak dále dělí po 8 bitech na H (horní) L (spodní) část. Dnes už můžeme narazit i na 64bitové registry, ty jsou pak označeny R na začátku.
 +
 +^  RAX  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 +| |||||||||||||||||||||||||||||||^  EAX  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 +| |||||||||||||||||||||||||||||||||||||||||||||||^  AX  ^^^^^^^^^^^^^^^^
 +| |||||||||||||||||||||||||||||||||||||||||||||||^  AH  ^^^^^^^^  AL  ^^^^^^^^
 +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
 +
 +===== Strojový jazyk =====
 +Instrukce ve strojovém jazyce je zapsána v binární podobě a může mít proměnlivou délku. První část určuje operační kód (identifikuje instrukci). Dále pak může následovat jeden nebo více operandů. Programu ve strojovém jazyce se někdy říká binární soubor a je počítačem přímo prováděn.
 +
 +===== Symbolický jazyk =====
 +Protože je téměř nemožné efektivně ve strojovém jazyku psát programy, používáme pro přímé programování procesoru jazyk symbolických instrukcí. Každá jednotlivá instrukce má přidělené slovo či zkratku. Na každý řádek píšeme jednu instrukci spolu s jejími parametry. Lze použít také návěští pro označení úseku kódu, abychom při skocích v programu nemuseli psát ručně adresu cíle skoku.
 +
 +Program napsaný v jazyku symbolických instrukcí se na strojový kód převádí překladačem (angl. assembler). V češtině je v tom trochu bordel a //asembler// se říká jak symbolickému jazyku, tak překladači.
 +
 +Aby překladač byl překlad schopen provést, musí mu být poskytnuty některé dodatečné informace, které se označují jako direktivy (pokyny pro překladač). Mezi nejdůležitější patří direktiva na definici počáteční adresy programu a direktiva ukazující na startovní instrukci programu (první instrukce, která se má začít provádět). Dále pomocí direktiv můžeme rezervovat v paměti místo, které pomocí této direktivy pojmenujeme a používáme dále toto jméno místo toho, abychom pokaždé uváděli přesnou adresu - vznikají tím jakési "proměnné" asembleru.
 +
 +===== Adresování =====
 +FIXME - bud to prijde sem, nebo k 7.: "cinnost pocitace"