82 lines
No EOL
3.1 KiB
Markdown
82 lines
No EOL
3.1 KiB
Markdown
# 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 |