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

background image

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

background image

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

Želiš da pročitaš svih 25 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti