Kubatova Y36SAP 9. Strojový kód ISA architektura souboru instrukcí střadačově, zásobníkově orientovaná, GPR Kubátová Y36SAP-ISA 1

Podobné dokumenty
Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1

Přednáška. Strojový kód a data. 4. Přednáška ISA J. Buček, R. Lórencz

Struktura a architektura počítačů (BI-SAP) 8

Struktura a architektura počítačů (BI-SAP) 7

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Procesory, mikroprocesory, procesory na FPGA O. Novák, CIE 11 1

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Pohled do nitra mikroprocesoru Josef Horálek

a operačních systémů

Princip funkce počítače

Procesor z pohledu programátora

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

8. Laboratoř: Aritmetika a řídicí struktury programu

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Popis instrukční sady procesoru ADOP

Strojový kód. Instrukce počítače

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška I / 21

Architektury počítačů a procesorů

Pohled do nitra mikroprocesoru

Struktura a architektura počítačů (BI-SAP) 9

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Registry 32 bitové pro všeobecné použití: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.

RISC a CISC architektura

Procesor. Procesor FPU ALU. Řadič mikrokód

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

Architektura počítačů. Instrukce a návrh instrukční sady. Lubomír Bulej KDSS MFF UK

Architektury CISC a RISC, uplatnění v personálních počítačích

Architektura počítače

Architektury VLIW M. Skrbek a I. Šimeček

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

MSP 430F1611. Jiří Kašpar. Charakteristika

Y36SAP

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

Architektura procesoru ARM

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Architektura počítačů Implementace procesoru

Assembler - 2.část. poslední změna této stránky: Zpět

Provádění instrukcí. procesorem. Základní model

C2115 Praktický úvod do superpočítání

Architektura počítačů

PROCESOR. Typy procesorů

Struktura a architektura počítačů (BI-SAP) 1

ISU Cvičení 3. Marta Čudová

CHARAKTERISTIKA PROCESORU PENTIUM První verze:

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Počítač jako prostředek řízení. Struktura a organizace počítače

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Opakování programování

Principy komunikace s adaptéry periferních zařízení (PZ)

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Program a životní cyklus programu

Architektura počítačů Logické obvody

Úvod do programovacích jazyků (Java)

Algoritmizace a programování

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

ISU Cvičení 7. Marta Čudová

2 Hardware a operační systémy

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry.

x86 assembler and inline assembler in GCC

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Systémová struktura počítače

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Profilová část maturitní zkoušky 2014/2015

Algoritmizace a programování

Architektura počítačů Logické obvody

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Mikrokontroléry. Doplňující text pro POS K. D. 2001

ŘÍZENÍ ELEKTRICKÝCH POHONŮ. Systémová struktura počítače Řízení běhu programu. České vysoké učení technické Fakulta elektrotechnická

Adresní mody procesoru

Techniky zvýšení výkonnosti procesoru, RISC a CISC procesory

Simulátory aplikačně specifických instrukčních procesorů Jazyk LISA. Masařík Karel

Struktura a architektura počítačů (BI-SAP) 11


Paměťový podsystém počítače

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Architektura procesorů PC shrnutí pojmů

CISC A RISC PROCESORY Jak pracují procesory CISC:

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Paměti a jejich organizace

Algoritmizace a programování

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Petr Krajča. 26. říjen, 2012

Úvod do architektur personálních počítačů

Program "Světla" pro mikropočítač PMI-80

Architektura Pentia 1

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Architektura počítačů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Profilová část maturitní zkoušky 2015/2016

Generování vnitřní reprezentace programu

Technické prostředky počítačové techniky

Architektury CISC a RISC, uplatnění rysů architektur RISC v personálních počítačích - pokračování

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Struktura a architektura počítačů

Transkript:

Y36SAP 9 Strojový kód ISA architektura souboru instrukcí střadačově, zásobníkově orientovaná, GPR 2007-Kubátová Y36SAP-ISA 1 Architektura souboru instrukcí, ISA - Instruction Set Architecture Vysoká Architektura počítače ISA Aplikace Úroveň abstrakce Nízká Operační systém Překladač Architektura souboru instrukcí Architektura procesoru I/O Systém Číslicový návrh VLSI obvodový návrh 2007-Kubátová Y36SAP-ISA 2 Y36SAP-9 1

Instrukční soubor kritický interface software instruction set hardware 2007-Kubátová Y36SAP-ISA 3 Strojový kód Co musí instrukce obsahovat instrukce = příkaz, zakódovaný jako číslo co se má provést s čím se to má provést (operandy) kam se má uložit výsledek kde se má pokračovat Tyto informace jsou obsaženy v instrukci... tzn. explicitně např. počítač SAPO, tzv. 5 adresový Zčásti v instrukci, zčásti dány architekturou počítače, tzn. implicitně (von Neumannova architektura) 2007-Kubátová Y36SAP-ISA 4 Y36SAP-9 2

Příklady strojových instrukcí op. znak operand1 operand2 výsledek 3 adresová instrukce op. znak operand1 operand2 2 adresová instrukce výsledek se ukládá na místo prvního operandu, zavedení operace přesun op. znak operand 1 adresová instrukce zavedení pracovního registru STŘADAČ, ACCUMULATOR 2007-Kubátová Y36SAP-ISA 5 instrukce: operační znak, OZ, opcode operand(y) více střadačů více registrů k obecnému použití Příklad: 96B90018FF20 zápis ve strojovém kódu je nepřehledný a špatně se programuje vyšší programovací jazyk VPJ: Pascal, Java, C jazyk symbolických instrukcí JSI... operační znak i adresy (operandy) jsou zapsány symbolicky...asembler 2007-Kubátová Y36SAP-ISA 6 Y36SAP-9 3

Architektura souboru instrukcí, ISA - Instruction Set Architecture Zahrnuje Typy a formáty instrukcí, instrukční soubor Datové typy, kódovaní a reprezentace, způsob uložení dat v paměti Módy adresování paměti a přístup do paměti dat a instrukcí Mimořádné stavy Umožňuje Abstrakce (výhoda různé implementace stejné architektury) Definice rozhraní mezi nízko-úrovňovým SW a HW Standardizuje instrukce, bitové vzory strojového jazyka 2007-Kubátová Y36SAP-ISA 7 ISA: Co musí být definováno? Instruction Fetch Instruction Decode Operand Fetch Execute Result Store Synchron Interrupt? Formát a kódování instrukcí Jak se instrukce dekóduje? Umístění operandů a výsledku Kolik explicitních operandů je v instrukci pro ALU? Jak jsou operandy umístěny v paměti nebo jinde? Který operand může být v paměti? Typy dat a velikosti operandů Operace v ISA Které jsou podporovány? Výběr další instrukce Skoky, větvení programu, volání podprogramů fetch-decode-execute je implicitní! 2007-Kubátová Y36SAP-ISA 8 Y36SAP-9 4

Adresace operandů - přímá... jen operační znak... konstanta = přímý operand paměť pole registrů... přímá adresa (paměti nebo registru) 2007-Kubátová Y36SAP-ISA 9 Adresace operandů - nepřímá d) Indirect... nepřímá adresa (pomocí paměti nebo registru) 2007-Kubátová Y36SAP-ISA 10 Y36SAP-9 5

Adresace operandů - relativní d) relative 2007-Kubátová Y36SAP-ISA 11 Adresace operandů - indexová inkrement 2007-Kubátová Y36SAP-ISA 12 Y36SAP-9 6

ISA: Základní třídy Akumulátorově (střadačově) orientovaná ISA (1 registr=střadač): 1 operand ADD A acc acc + mem[a] ADD (A + IX) acc acc + mem[a + IX] IX je indexovací registr Zásobníkově orientovaná ISA 0 operandů ADD stack(top-1) stack(top) + stack(top-1) top-- ISA orientovaná na registry pro všeobecné použití (GPR = General Purpose Registers): 2 operandy ADD A B EA(A) EA(A) + EA(B) 3 operandy ADD A B C EA(A) EA(B) + EA(C) EA Efektivní adresa (určuje registr, nebo operand v paměti) 2007-Kubátová Y36SAP-ISA 13 nejstarší ISA (1949-60) vyvinula se z kalkulaček LOAD A acc mem[a] STORE A ADD A SUB A SHIFT LEFT Akumulátorově orientovaná ISA s absolutní adresací mem[a] acc acc acc + mem[a] acc acc - mem[a] acc 2 x acc SHIFT RIGHT acc acc / 2 JUMP A PC A JGE A if (0 acc) then PC A LOAD ADDR X načtení adresy operandu X do acc STORE ADDR X uložení adresy operandu X z acc Typicky méně než 24 instrukcí! Hardware byl velmi drahý. 2007-Kubátová Y36SAP-ISA 14 Y36SAP-9 7

Akumulátorově orientovaná ISA - dnes Z indexovacích registrů se vyvinuly speciální registry pro nepřímou adresaci, zvláštním typem je stack pointer (ukazatel na vrchol zásobníku). Procesory také zahrnují pracovní registry (tzv. zápisníková paměť). Toto pole snižuje četnost přístupů do paměti. Implicitním operandem ALU je vždy akumulátor (druhý operand může být v registrech nebo v paměti). Použita v prvních mikroprocesorech: 4004, 8008, 8080, 6502, Dnes použita v některých mikrokontrolérech: 8051, 68HC11, 68HC05, ISA X86 představena jako ISA s více akumulátory => s nástupem i386 upravena na GPR. 2007-Kubátová Y36SAP-ISA 15 Akumulátorově orientovaná ISA - shrnutí Výhody : jednoduchý HW minimální vnitřní stav procesoru rychlé přepínání kontextu krátké instrukce (záleží na typu druhého operandu) jednoduché dekódování instrukcí Nevýhody : častá komunikace s pamětí (dnes problém) omezený paralelismus mezi instrukcemi Není náhodou, že tento typ ISA byl populární v 50. a 70. letech - hardware byl drahý, paměť byla rychlejší než CPU. 2007-Kubátová Y36SAP-ISA 16 Y36SAP-9 8

Zásobníkově orientovaná ISA Využití zásobníku při vykonávání programu : Vyhodnocení výrazů Vnořená volání podprogramů - předávání návratové adresy a parametrů - lokální proměnné Známým příkladem byl Burrough B5000, 1960 - počítač navržený k podpoře jazyka ALGOL 60. - vyhodnocení výrazů podporoval hardwarový zásobník 2007-Kubátová Y36SAP-ISA 17 Zásobníkově orientovaná ISA HW zásobník = sada registrů s ukazatelem na vrchol (uvnitř CPU) Instrukce : PUSH A Stack[++Top] mem[a] POP A ADD,SUB, mem[a] Stack[Top--] Stack[Top-1] Stack[Top] OP Stack[Top-1] Top-- B5000 rovněž podporuje indexovací registry. CPU Main Memory ALU HW Stack Top++, 2007-Kubátová Y36SAP-ISA 18 Y36SAP-9 9

Zásobníkově orientované ISA... většinou vyhynuly před rokem 1980 Výhody : jednoduchá a efektivní adresace operandů krátké instrukce vysoká hustota kódu (krátké programy) jednoduché dekódování instrukcí neoptimalizující překladač se dá snadno napsat Nevýhody: nelze náhodně přistupovat k lokálním datům zásobník je sekvenční (omezuje paralelismus) přístupy do paměti je těžké minimalizovat 2007-Kubátová Y36SAP-ISA 19 Zásobníkově orientované ISA po roce 1980 Inmos Transputers (1985 1996) navrženy k podpoře efektivního paralelního programování pomocí paralelního programovacího jazyka Occam Inmos T800 byl v druhé polovině 80. let nejrychlejší 32-bitový CPU zásobníkově orientovaná ISA zjednodušila implementaci podpora pro rychlé přepínání kontextu Forth machines Forth je zásobníkově orientovaný jazyk používá se v řídicích a kybernetických aplikacích několik výrobců (Rockwell, Patriot Scientific) Intel x87 FPU nepříliš dobře navržený zásobník pro vyhodnocování FP výrazů překonán architekturou SSE2 FP v Pentiu 4 Java Virtual Machine,.NET navržen pro SW emulaci (podobně jako PostScript) Sun PicoJava a další HW implementace 2007-Kubátová Y36SAP-ISA 20 Y36SAP-9 10

Vývoj ISA Historický pohled Jeden akumulátor (EDSAC, 1950) Akumulátor + indexovací registry (Manchester Mark I, IBM 700 series, 1953) Oddělení programovacího modelu od implementace Orientace na vyšší jazyky Koncept rodiny (B5000, 1963) (IBM 360, 1964) Koncept registrů pro všeobecné použití (GPR) CISC Load/Store architektura (Vax, Intel 432, 1977-80) (CDC 6600, Cray 1, 1963-76) RISC (Mips, Sparc, HP-PA, IBM RS6000,...1987) 2007-Kubátová Y36SAP-ISA 21 GPR ISA dnes převládá Po roce 1975 používají všechny nové procesory nějakou podobu GPR (registry pro všeobecné použití.. general purpose registers) Výhody GPR ISA Registry - jsou rychlejší než paměť (včetně cache!!) K registrům lze přistupovat náhodně (X zásobník je přísně sekvenční) Registry mohou obsahovat mezivýsledky a lokální proměnné Méně častý přístup do paměti potenciální urychlování 2007-Kubátová Y36SAP-ISA 22 Y36SAP-9 11

GPR ISA Nevýhody GPR ISA omezený počet registrů složitější překladač (optimalizace použití registrů) přepnutí kontextu trvá déle registry nemohou obsahovat složitější datové struktury (records ) k objektům v registrech nelze přistupovat přes ukazatele (omezuje alokaci registrů) 2007-Kubátová Y36SAP-ISA 23 Jednoduchý procesor von Neumannova typu CPU ALU CU Registry Paměť DB AB CB D7:D0 A7:A0 Sběrnice IF CPU musí obsahovat ALU, CU a registry pro dočasné uchování dat, instrukcí a pomocných proměnných CPU pro běh programu prochází základním cyklem počítače: 1. Instruction Fetch IF načtení instrukce 2. Instruction Decode ID dekódování instrukce 3. Operand Fetch OF načtení operandu(ů) 4. Instruction Execution IE vykonání instrukce 5. Write Back WB zapsání výsledku (také Result Store) 2007-Kubátová Y36SAP-ISA 24 ID OF IE WB Interrupt? Y36SAP-9 12

Jednoduchý procesor... AB PC Řízení IR IF ID ALU ACC M paměť PC Program Counter, prog. čítač, obsahuje adresu instrukce, která bude vykonána v dalším cyklu ACC Accumulator, střadač, obsahuje zpracovávaná data ALU Arithmetic Logic Unit, aritmeticko-logická jednotka, vykonává operace s daty IR Instruction Register, instrukční registr, obsahuje kód aktuálně 2007-Kubátová prováděné instrukce pro programátora Y36SAP-ISA je skrytý 25 DB M OF IE WB Interrupt? Jednoduchý procesor...čtení instrukce PC AB Řízení IR IF ID OF ALU ACC M IE WB DB Interrupt? Procesor pošle adresu instrukce z PC na AB M vystaví obsah paměťového místa instrukce z PC na DB IR kód instrukce z DB je zapsán do IR 2007-Kubátová Y36SAP-ISA 26 Y36SAP-9 13

Jednoduchý procesor...dekódování instrukce PC AB Řízení IR IF ID OF ALU ACC M IE WB k DB Interrupt? IR instrukční kód z IR je dekódován interní logikou (řadičem) a současně jsou generovány řídící signály pro ALU a další interní obvody procesoru. PC programový čítač vystaví hodnotu na AB, ALU zvětší tuto hodnotu o k a zapíše nazpět do PC (když pc je původní obsah PC, pc pc+k), hodnota k je určena dekódováním instrukce, sekvenční zpracování k=1, skok k nějaké celé číslo s omezeného intervalu. 2007-Kubátová Y36SAP-ISA 27 Jednoduchý procesor... čtení operandů PC AB Řízení IR IF ID OF ALU ACC M IE WB DB Interrupt? IR zapsání adresy operandu, který má být při vykonávání instrukce použit, na AB M paměť vystaví hodnotu operandu na DB, takto je operand připraven pro zpracování buď v ALU nebo v ACC 2007-Kubátová Y36SAP-ISA 28 Y36SAP-9 14

Jednoduchý procesor... vykonání instrukce AB PC Řízení IR IF ID OF ALU ACC M IE WB DB Interrupt? IR vystavuje na AB adresu hodnoty operandu, který má být při vykonání instrukce použit ALU operace je vykonána v ALU podle instrukce, jejíž kód je v IR a generuje pomocí interní logiky řídící signály M paměť může mít nadále vystavenou hodnotu operandu na DB ACC slouží jako cílový registr, může být ale také zdrojovým 2007-Kubátová Y36SAP-ISA 29 Jednoduchý procesor... zápis výsledku ne vždy se provádí PC ALU AB Řízení ACC IR M IF ID OF IE WB Interrupt? IR vystaví hodnotu adresy paměti, kam má být hodnota obsažená v ACC zapsána ACC vystaví hodnotu obsaženou v něm na DB M hodnota z DB je zapsána do paměti Táto fáze základního cyklu může být, nebo nemusí být vykonána. V některých 2007-Kubátová Y36SAP-ISA 30 procesorech je táto fáze zákl. cyklu vykonávaná jako separátní instrukce. DB Y36SAP-9 15

Jaké instrukce??? bitový procesor Registry kolik, jakých, jak přístupných, PC, IR, PSW, adresace?, datové? Paměť?? 16 bitů adresuje 64 Kslov... slovo?? příznaky Z (Zero), S (Sign), C (Carry), O (Overflow) a další? instrukce v JSI: aritmetické ADD, SUB, AND, OR, XOR, NEG, NOT, MOV, CMP Přímý operand, nepřímý operand řídící JMP, JO, JNO, JS, JNS, JC, JNC, JZ, JNZ, JE, JNE, JG, JL, JGE, JLE, JA, JB, JAE, JBE uložení do paměti ST HALT, OUT, IND reprezentace hodnot přímý kód, doplňkový kód, nezáporná čísla syntaxe jazyka symbolických instrukcí 2007-Kubátová Y36SAP-ISA 31 Návrh instrukcí procesoru ADOP jaké jak kódované jak dlouhé jaká adresace operandů kolik registrů 2007-Kubátová Y36SAP-ISA 32 Y36SAP-9 16

Architektura ADOP Registry 16 registrů dostupných programátorovi: R0 R11 universálních (datových) registrů SP ukazatel zásobníku PC programový čítač PSW stavový registr, Příznaky Z zero, C carry, S sign, O overflow, ES extended sign (znaménko 2. operandu v binárních operacích) ZR obsahuje konstantní nulu Paměť big endian, kapacita 2 16 B 64KB 2007-Kubátová Y36SAP-ISA 33 MOV kam, co Přesuny dat kam... registr co... registr (obsah registru), přímý operand 4, 8, 16 bitový, operand nepřímo adresovaný ST co, kam PUSH, POP 2007-Kubátová Y36SAP-ISA 34 Y36SAP-9 17

// nalezení maximálního prvku v poli mov r0, 0x8000 // doposud max hodnota do R0 mov r2, pole // pointer na začátek pole do R2 rep: cmp r0, [r2] // porovnání dosavadní maximální hodnoty jge next mov r0, [r2] // nalezení nové maximální hodnoty next: add r2, 2 // přesun na další prvek v poli cmp r2, endpole // otestování zda je dosaženo konce pole jeq end // skok na konec jmp rep // opakování end: st r0, [max] // uložení výsledku halt max: dw 0 pole:dw 1, -13, 33, 0x7777 2007-Kubátová Y36SAP-ISA 35 endpole: Deklarace proměnných pseudoinstrukce vyhrazení místa v paměti (pro výsledek) data: zadání vstupních dat SHORT - jednobytový operand se znaménkem BYTE - jednobytový operand bez znaménka WORD - dvoubytový operand deklarace... DS, DB, DW 2007-Kubátová Y36SAP-ISA 36 Y36SAP-9 18

// nalezení maximálního prvku v poli mov r0, 0x8000 // doposud max hodnota do R0 mov r2, pole // pointer na začátek pole do R2 rep: cmp r0, [r2] // porovnání dosavadní maximální hodnoty jge next mov r0, [r2] // nalezení nové maximální hodnoty next: add r2, 2 // přesun na další prvek v poli cmp r2, endpole // otestování zda je dosaženo konce pole jeq end // skok na konec jmp rep // opakování end: st r0, [max] // uložení výsledku halt max: dw 0 pole:dw 1, -13, 33, 0x7777 2007-Kubátová Y36SAP-ISA 37 endpole: Aritmetické binární ADD ADC SUB SBB CMP unární NOT INC DEC 2007-Kubátová Y36SAP-ISA 38 Y36SAP-9 19

// nalezení maximálního prvku v poli mov r0, 0x8000 mov r2, pole // doposud max hodnota do R0 // pointer na začátek pole do R2 rep: cmp r0, [r2] // porovnání dosavadní maximální hodnoty jge next mov r0, [r2] // nalezení nové maximální hodnoty next: add r2, 2 // přesun na další prvek v poli cmp r2, endpole // otestování zda je dosaženo konce pole jeq end jmp rep // skok na konec // opakování end: st r0, [max] // uložení výsledku halt max: dw 0 pole:dw 1, -13, 33, 0x7777 2007-Kubátová Y36SAP-ISA 39 endpole: paměť slabikově organizovaná, data jsou slova, proto posuv o 2 adresy Nezáporná x záporná čísla interpretace 2007-Kubátová Y36SAP-ISA 40 Y36SAP-9 20

CMP - porovnání jako SUB, ale neuloží výsledek, jen příznaky 2007-Kubátová Y36SAP-ISA 41 // nalezení maximálního prvku v poli mov r0, 0x8000 // doposud max hodnota do R0 mov r2, pole // pointer na začátek pole do R2 rep: cmp r0, [r2] // porovnání dosavadní maximální hodnoty jge next mov r0, [r2] // nalezení nové maximální hodnoty next: add r2, 2 // přesun na další prvek v poli cmp r2, endpole // otestování zda je dosaženo konce pole jeq end // skok na konec jmp rep // opakování end: st r0, [max] // uložení výsledku halt max: dw 0 pole:dw 1, -13, 33, 0x7777 2007-Kubátová Y36SAP-ISA 42 endpole: Y36SAP-9 21

binární AND OR XOR unární NEG Logické 2007-Kubátová Y36SAP-ISA 43 Skoky... nepodmíněný skok JMP label // label... návěští Př. MOV r0, 1 JMP label1 cosi: ADD r0, r5 navesti1: rrc r0 1 2-3 2007-Kubátová Y36SAP-ISA 44 Y36SAP-9 22

Skoky... podmíněné skoky 2007-Kubátová Y36SAP-ISA 45 Podmínky ve skocích Z, NZ,... je možné použít JEG i JZ, je to to samé C, NC, S, NS O, NO, Složené podmínky se používají pro vyhodnocení porovnání (CMP) resp. odečtení dvou operandů a testují logický výrazy nad příznaky: GE (greater or equal)!sf &&!OF SF && OF (výraz je ekvivalentní s SF == OF)... pro čísla v doplňovém kódu LT (less then) negace podmínky GE... pro čísla v doplňovém kódu GT (greater then) GE &&!Z LE (less or equal) negace podmínky GT, AT (above then) C &&!Z... pro čísla nezáporná BE, (below equal) negace podmínky AT... pro čísla nezáporná TRUE podmínka vždy splněna 2007-Kubátová Y36SAP-ISA 46 Y36SAP-9 23

// nalezení maximálního prvku v poli mov r0, 0x8000 // doposud max hodnota do R0 mov r2, pole // pointer na začátek pole do R2 rep: cmp r0, [r2] // porovnání dosavadní maximální hodnoty jge next mov r0, [r2] // nalezení nové maximální hodnoty next: add r2, 2 // přesun na další prvek v poli cmp r2, endpole // otestování zda je dosaženo konce pole jeq end // skok na konec jmp rep // opakování end: st r0, [max] // uložení výsledku halt max: dw 0 pole:dw 1, -13, 33, 0x7777 2007-Kubátová Y36SAP-ISA 47 endpole: Posuvy SHL, SHR, ASR aritmetický posun vpravo, RRC, RLC ASR Např. rotace (RC) nebo posuv (SH) vybraného bitu do C a následný skok podle hodnoty C 2007-Kubátová Y36SAP-ISA 48 Y36SAP-9 24

Příklad Napište program v JSI ADOP, který nalezne největší číslo v poli. 2007-Kubátová Y36SAP-ISA 49 // nalezení maximálního prvku v poli mov r0, 0x8000 // doposud max hodnota do R0 mov r2, pole // pointer na začátek pole do R2 rep: cmp r0, [r2] // porovnání dosavadní maximální hodnoty jge next mov r0, [r2] // nalezení nové maximální hodnoty next: add r2, 2 // přesun na další prvek v poli cmp r2, endpole // otestování zda je dosaženo konce pole jeq end // skok na konec jmp rep // opakování end: st r0, [max] // uložení výsledku halt max: dw 0 pole:dw 1, -13, 33, 0x7777 2007-Kubátová Y36SAP-ISA 50 endpole: Y36SAP-9 25

Simulátor http://service.felk.cvut.cz/jws/proc/procwww/ umožňuje psát programy v JSI, překládat, krokovat, spouštět a sledovat změny obsahu registrů a paměti 2007-Kubátová Y36SAP-ISA 51 Y36SAP-9 26