Přidání poznámek z POT o kódování instrukcí

This commit is contained in:
Filip Znachor 2023-06-09 16:59:26 +02:00
parent 3e85e05216
commit 51fb1f144a

View file

@ -0,0 +1,82 @@
# 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