You are on page 1of 28

Organizacija i arhitektura

računala

Poglavlje 9
Instrukcijski skup:
Karakteristike i funkcije
Što je to instrukcijski skup?

To je skup instrukcija koje CPU razumije i prema


njima radi određene radnje
Strojni kôd
binarni k ôd
obično je vidljiv prilikom asemblerskog
programiranja
Elementi jedne instrukcije

Operacijski kôd (Op code)


napravi to i to...
Izvorni operand
Napravi nešto od ovoga...
Rezultantni operand
Spremi rezultat ovdje...
Slijedeća instrukcija je...
Kad si završio sa ovom instrukcijom, idi na slijedeću
tu i tu instrukciju
Gdje su svi ti silni operandi, gdje završe,
što se sa njima događa?

Ako se sada to pitate... onda ste puno toga prije


ovog predavanja propustili ☺
pa... u glavnoj memoriji, virtualnoj memoriji,
cacheu,...
CPU registrima
I/O jedinicama
Način zapisivanja/predstavljanja
instrukcije

U strojnom kôdu svaka instrukcija ima


jedinstveni binarni zapis
Za lakšu prezentaciju čovjeku kao programeru
instrukcije su prikazane simbolički
npr. ADD, SUB, LOAD
Operandi također ovako mogu biti prikazani
ADD A,B
Vrste instrukcija

procesiranje podataka
pohrana podataka (glavna memorija)
Premještanje podataka (I/O)
Kontrola tijeka programa
Načini adresiranja (a)

3 adrese
Operand 1, Operand 2, Rezultat
a = b + c;
Može biti i 4. adresa - slijedeća instrukcija (obićno je
to implicitno izraženo)
ali nije uobičajeno
Potrebne su vrlo velike riječi da bi se takva
instrukcija mogla pohraniti
Načini adresiranja (b)

2 adrese
Jedna adresa je i za operand i za rezultat
a=a+b
Redukcija duljine instrukcije
Traži još dodatne podoperacije – dodatan posao
⌧Privremeni spremnik za čuvanje privremenih rezultata
Načini adresiranja (c)

1 adresa
implicitna druga adresa
obično je to nekakav registar (accumulator)
oubičajeni način adresiranja kod prvotnih računala
Načini adresiranja (d)

0 (zero) adresa
sve adrese su implicitne
koristi se stog/stack
npr. push a
push b
add
pop c

c=a+b
Koliko i koji način adresiranja?

Više adresa u instrukciji


Složene (moćne?) instrukcije
Više registara
⌧operacije među registrima su najbrže operacije
Manje instrukcija po programu – kraći i manji programi
Manje adresa u instrukciji
Manje složene (i moćne?) instrukcije
Više instrukcija po programu
ali i brži instrukcijski ciklus zahvata/izvršenja takvih instrukcija
Što odabrati, kako dizajnirati
sustav (1)

Repertoar operacija
koliko ops?
kako to one mogu obaviti?
Koliko su one kompleksne?
Vrsta podataka
Instrukcijski formati
Duljina op code polja
Broj adresa/način adresiranja
Što odabrati, kako dizajnirati
sustav (2)

Registri
Broj raspoloživih CPU registara
Koje se operacije mogu izvoditi na kojim registrima?
Načini adresiranja…

RISC protiv CISC-a


Tipovi operanada

Adrese
Brojevi
Integer/floating point
Znakovi/Characters
ASCII
Logički podaci/Logical Data
Bitovi ili zastavice/flags
Tipovi podataka kod Pentuim-a

8 bit Byte
16 bit word
32 bit double word
64 bit quad word
Adresiranje se izvodi putem 8-bitne jedinice
32 bit double word se čita na adresama djeljivim
sa 4 (32bit=4x1byte)
Specifični tipovi podataka

Generalno – čisti binarni podaci


Integer - single binary value
Ordinal - unsigned integer
Nepakirani BCD - One znamenka po byteu
Pakirani BCD - 2 BCD znamenke po byteu
Pokazivači blizine - 32 bitni offset unutar nekog
segmenta
Bit polje
Byte String
Floating Point
Vrste operacija

Prijenos podataka
Artimetika
Logičke operacije
Pretvorbe/konverzija
I/O
Sistemsko upravljanje
Prijenos ovlasti upravljanja
Prijenos podataka

Specificira/određuje
Izvor
Odredište
količinu podataka za prijenos
Mogu postojati različite instrukcije za različite
operacije prijenosa podataka
npr. IBM 370
ili jedna instrukcija sa različitim adresiranjem
npr. VAX
Aritmetika

Add, Subtract, Multiply, Divide


Signed Integer
Floating point ?
maže sadržavati
Increment (a++)
Decrement (a--)
Negate (-a)
Logičke operacije

Operacije na razini jednog bita – bit-po-bit


AND, OR, NOT
Operacije konverzija/pretvorbe

npr. binarni broj u BCD zapis


I/O operacije

Mogu postojati I/O operacije specifične za


pojedine vrste I/O jedinica
ili se mogu koristiti instrukcije za prijenos
podataka – ako je I/O memorijski mapirana
ili putem odvojenog DMA kontrolera
Operacije sistemske kontrole

Privilegirane instrukcije
CPU mora biti u posebnom stanju
Ring 0 kod 80386+
Kernel mode
Koriste se kod O/S-a
Operacije prijenosa ovlasti
upravljanja

Granjanje
npr. granaj se na x ako je rezultat nula
Preskok/skok
npr. inkrement i skok ako je nula
ISZ Register1
granaj xxxx
ADD A
pozivi potprograma
poziv interrupt potprograma
Poredak byte-ova

Kojim redoslijedom isčitavamo byteove broja


ako on zauzima više od jednog bytea?
npr. broj može biti pohranjen u hex-a formatu i
zauzimati 4-8 byteova
12345678 može se pohraniti 4x8bit na slijedeći
način...
Poredak byte-ova (primjer)

Adresa Value (1) Value(2)


184 12 78
185 34 56
186 56 34
186 78 12

npr. čitati odozgo prema dolje ili obratno?


Nazivi poredaka byte-ova

Ovaj problem se naziva “Endian”


Sustav zapisivanja lijevo (Value-1) ina na
najnižoj adresi najmanje značajan, LSB, byte
Ovaj način se zove – BIG-ENDIAN
Desni sustav ima LSB na najvišoj adresi i
on se zove – LITTLE-ENDIAN
Standardi... što je standard?

Pentium (80x86), VAX su little-endian


IBM 370, Motorola 680x0 (Mac), i većina RISC
su big-endian
Internet je big-endian
što čini pisanje internet programa na PC-u još više
problematičnim!
WinSock omogućava i pruža “htoi” i “itoh” (Host to
Internet & Internet to Host) funkcije za konverziju

You might also like