Arhitektura procesora. Niti i njihova implementacija
Elektrotehnički fakultet
Operativni sistemi 1
u Beogradu
Arhitektura procesora. Niti i njihova implementacija
Podsećanje na Arhitekturu i organizaciju računara.
Zad 1.
Za procesor sa slike i deo njemu odgovarajućeg mikro koda
objasniti:
a) Tok izvršenja jedne mašinske (asemblerske) instrukcije. Nacrtati
izgled memorije, pre i posle izvršenja te instrukcije. Naznačiti
prostor za podatke, prostor za kod (instrukcije) i prostor za stek.
b) Šta se dešava u toku izvršenja jednog asemblerskog programa?
Šta izvršava hardver, a šta softver? Odnosno, gde je granica
između hardvera i softvera?
c) Uraditi tačke a) i b) za sledeći program na C jeziku:
i = i + 1;
j = i * 5 + 3;
k = i + j;
Hardver (šema procesora)
; Dohvatanje instrukcije
BEGIN:
PCout,MARin,Xin,clY
read,ALUinc,ALUout,PCin,Xin
wmfc
MDRout,IRLin
PCout,MARin
read,ALUinc,ALUout,PCin
Operativni sistemi 1 Copyright
2006 Miloš Milovanović
Mart 2006
1 / 25
Elektrotehnički fakultet
Operativni sistemi 1
u Beogradu
wmfc
MDRout,IRHin
; Dekodovanje instrukcije
opcase
; Binarne operacije
; Dohvatanje operanda 1
FOP1: regsel1,REGout,TEMPin,
branch
(IR9=0,FOP2)
; Registarsko indirektno sa pomerajem
PCout,MARin,Xin,clY
read,ALUinc,ALUout,PCin,Xin
wmfc
MDRout,TEMPLin
PCout,MARin
read,ALUinc,ALUout,PCin
wmfc
MDRout,YHin
TEMPout,YLin
regsel1,REGout,Xin
ALUadd,ALUout,Xin,clY,MARin,DISPin
read
wmfc
MDRout,TEMPLin
ALUinc,ALUout,MARin
read
wmfc
MDRout,TEMPHin
; Dohvatanje operanda 2
FOP2: regsel2,REGout,Yin,
branch
(IR4=0,BINOP)
; Registarsko indirektno sa pomerajem
PCout,MARin,Xin,clY
read,ALUinc,ALUout,PCin,Xin
wmfc
PCout,MARin
ALUinc,ALUout,PCin
MDRout,YLin
read
wmfc
MDRout,YHin
regsel2,REGout,Xin
ALUadd,ALUout,Xin,clY,MARin
read
wmfc
ALUinc,ALUout,MARin
MDRout,YLin
read
wmfc
Operativni sistemi 1 Copyright
2006 Miloš Milovanović
Mart 2006
2 / 25

Elektrotehnički fakultet
Operativni sistemi 1
u Beogradu
- SP pokazuje na poslednju popunjenu lokaciju na steku.
Mašinski jezik (Asember)
- Mašinske instrukcije se izvršavaju nedeljivo (ne mogu da se
prekinu)
- Prekid se može prihvatiti tek po završetku mašinske instrukcije
<Grafički predstaviti poziv funkcije>
<Sadržaj steka>
call funkcija
push PC
PC = &funkcija
ret
pop PC
int funkcija(int x, int y);
push y // Pažnja
push x
call funkcija
pop
pop
-----------------
funkcija:
push bp
mov bp, sp
; telo funkcije
; rezultat se smesta u AX
pop bp
ret
int funkcija(int p);
// za 8086
mov ax, p
push ax
call funkcija
pop cx
-----------------
funkcija:
push bp
mov bp, sp
; telo funkcije
; rezultat se smesta u AX
Operativni sistemi 1 Copyright
2006 Miloš Milovanović
Mart 2006
4 / 25
Elektrotehnički fakultet
Operativni sistemi 1
u Beogradu
pop bp
ret
Zad 3.
Napisati program koji će imati dve funkcije a() i b(), i ne koristeći
petlje obezbediti da se na ekranu beskonačno ispisuje string “Između a i b”.
<nacrtati izgled steka>
#include
<stdio.h>
int
i;
void
a(){
asm{
push ax
mov ax, [bp]+2
mov i,ax
pop ax
}
}
void
b(){
asm{
push ax
mov ax,i
mov [bp]+2,ax
pop ax
}
}
int
main(){
a();
printf("Izmedju a i b. ");
Operativni sistemi 1 Copyright
2006 Miloš Milovanović
Mart 2006
5 / 25

Elektrotehnički fakultet
Operativni sistemi 1
u Beogradu
running->sp = tsp;
running=p[nextThread];
tsp = running->sp;
asm {
mov sp, tsp
// restauira sp
// restauira registre
pop dx
pop cx
pop bx
pop ax
}
}
void
a(){
for
(
int
i = 0; i < 3; ++i) {
printf(
"U a() %d "
,i);
}
asm {
mov ax, 7
}
dispatch(2);
asm {
mov i, ax
}
printf(
" u a() ax = %d "
,i);
for
(i = 0; i < 3; ++i) {
printf(
"U a() %d "
,i);
}
dispatch(2);
}
void
b(){
for
(
int
i = 0; i < 3; ++i) {
printf(
"U b() %d "
,i);
}
Operativni sistemi 1 Copyright
2006 Miloš Milovanović
Mart 2006
7 / 25
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti