# Kódování instrukcí - instrukce musí obsahovat - typ operace - adresu operandů - typ operandů - modifikátory adresy - modifikátory operace - jednotlivé typy operandů vyžadují různou délku pole pro jejich uložení v instrukci - podle způsobu kódování se dělí na dva typy **Instrukce s pevnou délkou** - všechny instrukce jsou stejně dlouhé (např. 32 bitů) - časté u procesorů RISC - **výhoda**: snadné a rychlé člení a dekódování dat - **nevýhoda**: nízká efektivita kódování - příklad: **MIPS** - procesor RIST s registrovou ISA (32 registrů) - všechny instrukce mají délku 32 bitů - adresování paměti možné jen **bázovou adresou** nebo **nepřímou adresou** - 3 základní formáty instrukcí - formát I (**Immediate**) - obsahuje operand o délce 16 bitů - formát J (**Jump**) - pro skokové instrukce - obsahuje 26bitový offset pro cílovou adresu - formát R (**Register**) - obsahuje pole pro určení 3 registrů (source, target, destination), pole pro délku posuvu a rozšířený operační kód **Instrukce s proměnnou délkou** - jednotlivé instrukce jsou zakódované do různého počtu bytů v závislosti na počtu operandů, délce adresy nebo přímého operandu atd. - časté u procesorů CISC - **výhoda**: efektivnější kódování složitých instrukcí - **nevýhoda**: obtížné čtení a dekódování - příklad: IA-32 - aritmetické a logické operace - operandy mohou být v registrech nebo v paměti - dvouadresové instrukce - adresování paměti - adresa může být např.: - `MOV EAX,EBX+[ECX*4]+0x0100` **Kódování nstrukcí procesoru H8S** - délka instrukcí je 2, 4, 6 nebo 8 bytů - při adresování instrukcí (skoky atd.) je délka adresy 8 nebo 24 bitů - při adresování dat je délka adresy 8, 16 nebo 32 bitů ## Logický a fyzický adresní prostor **Logický adresní prostor** - je určen rozsahem adres, které může procesor zpracovat v instrukcích - délka adres v instrukci + u některých procesorů modifikace adres segmentováním **Fyzický adresní prostor** - je určen velikostí fyzické paměti, se kterou může procesor pracovat - počet adresních vodičů **Mapovací mechanismus** - u jednoduchých procesorů není (logický a.p. = fyzický a.p.) - u výkonných procesorů je MMU (Memory Management Unit) pro segmentování a stránkování ### Adresní prostory H8S - logické adresní prostory - kódový adresní prostor (16 MB) - datový adresní prostor (4 GB) - fyzický adresní prostor **Formát adresy dat procesoru H8S** - logické adresování dat používá 32bitovou adresu - v instrukci lze použít 8, 16 nebo 32bitovou adresu - vyšší bity adresy doplní procesor **Formát adresy instrukcí procesoru H8S** - logické adresování instrukcí používá 24bitovou adresu - v instrukci lze použít 8 nebo 24bitovou adresu - vyšší bity adresy doplní procesor **Převod logické adresy na fyzickou** - logická adresa je 32bitová (data) nebo 24bitová (instrukce) - fyzická adresa je 24bitová - 8 nejvyšších bitů adresy dat se ignoruje