Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bilgisayar Organizasyonu

Benzer bir sunumlar


... konulu sunumlar: "Bilgisayar Organizasyonu"— Sunum transkripti:

1 Bilgisayar Organizasyonu
Procedures Procedure kullanimi Kodu moduler hale getirir, sonraki asamalarda programda degisiklik yapilmasini kolaylastirir Kod un paralel olarak birden fazla kisi tarafindan yazilmasina olanak saglar Procedure ler assembly language level da nasil gerceklenir Bilgisayar Organizasyonu

2 Bilgisayar Organizasyonu
Procedure Procedure cagrimi ve procedure dan donusun asamalari Save return address (geri donus adresini kaydet) Procedure call Execute procedure Return Bilgisayar Organizasyonu

3 Bilgisayar Organizasyonu
Procedure Cagrimi .text call: jal proc done proc: # procedure code here procedure . body . jr $31 Bilgisayar Organizasyonu

4 jal ve jr instruction lari
jal procedure_label jal instruction i izleyen instruction in addresini $31 ($ra) e yazar Label i procedure_label olan instruction a branch eder jr $31 $31 nin icerigi PC (program Counter) a yazilir ($31 nin isaret ettigi instruction a jump edilir) Bilgisayar Organizasyonu

5 Dynamic Storage Allocation
Geri donus adresini bir register da tutmak gecerli bir yontem eger nested procedure cagrimi yoksa Nested Procedure Call (NPC) Procedure icinden procedure cagrimi Eger NPC var ise $31 e yazilan onceki deger uzerine tekrar yazilir (overwrite) Geri donus adresinin kaybolmasina sebep olur Bilgisayar Organizasyonu

6 Dynamic Storage Allocation
Geri donus adresleri stack de saklanir NPC a izin verir Stack dinamik olarak genisler (procedure cagrildiginda), dinamik olarak kuculur (procedure dan geri donuldugunde) Dolayisiyle stack in dinamik olarak tahsis edildigi soylenir (dynamically allocated) Bilgisayar Organizasyonu

7 Bilgisayar Organizasyonu
Stack Tahsisi Bir cok bilgisayar stack i programin calismasi esnasinda olusturulan environment (runtime environment) in bir parcasi olarak gercekler. Bu stack e system stack denir. Stack cok yaygin olarak kullanildigindan bazi makinalar stack e efficient (hizli) erisim icin bazi destektekler saglar MIPS islemcisi Stacke itme yapildiginda (push) stack kucuk bellek adresine dogru genisler Stack in baslangicinin (bottom) adresini tutan bir register a sahip $29 ($sp) : stack pointer (stack in uzerinde ilk bos olan alanin adresini tutar) Bilgisayar Organizasyonu

8 Bilgisayar Organizasyonu
push ve pop islemleri push islemi: sw $8, 0($sp) add $sp, $sp, -4 veya sw $8, 4($sp) pop islemi: add $sp, $sp, 4 lw $8, 0($sp) veya lw $8, 4($sp) Bilgisayar Organizasyonu

9 Power function (recursive olarak)
.text . li $18,1 # $18 will contain the result move $19, $17 # $19 is a counter, $17 contains the power jal power power: sw $31, 0($sp) # save return address add $sp, $sp, -4 # by pushing it on the stack if: add $19, $19, -1 blez $19, endif jal power # recursive procedure call endif: mul $18, $18, $16 # $16 contains base add $sp, $sp, 4 # restore return address by pooping it off the # stack lw $31, 0($sp) return: jr $31 Bilgisayar Organizasyonu

10 Bilgisayar Organizasyonu
Activation Records Activation Record (stack frame) Bir procedure cagrildiginda yeni bir environment olusturulur Local degiskenler Hesaplamada kullanilan ve ara degerler tutan variable lar Return address gibi yeni environment daki variable lar da dynamic Degerleri procedure nin yasam suresi (lifetime) boyunca korunmali (fakat procedure sonlandiginda onlar da sonlanmali) Her bir procedure cagriminda, yeni olusan environment le ilgili bilgiler tutulmali Bu bilgiler stack te saklanir ve activation record (stack frame) olarak adlandirilirlar Bilgisayar Organizasyonu

11 Bilgisayar Organizasyonu
Activation Records Activation record bir procedure hakkindaki butun bilgileri icerir. NPC (nested procedure call) nin dogru olarak gerceklenmesine yetecek kadar bilgi icerir Activation record normal bir word un stacke push edilmesi ve stackten pop edilmesi gibi stack e push edilir veya stackten pop edilir Tek farki activation record un boyu word un boyundan daha buyuktur Activation record un stacke push edilmesi (procedure cagrimi esnasinda) ve stackten pop edilmesi (procedure dan donuste), stack pointerinn degeri activation recordun boyuna uygun olarak degistirilmeli. Bilgisayar Organizasyonu

12 Parameter Passing (parametre aktarimi)
Procedure alan tahsisi (activation record icin) bir dizi push islemleriyle saglanir Her bir parametrenin stack e push edilmesi Return address in stack e push edilmesi Calling procedure parametreleri stack e push eder Return address ini ise called procedure stack e push eder Bilgisayar Organizasyonu

13 Bilgisayar Organizasyonu
Parametre gecisi sp (a) (b) sp parameter3 parameter2 parameter 1 (c) (a) Parametreleri push etmeden once (b)parametreler push edilmis, fakat procedure call yapilmamis (c) Procedure call ve return address in saklanmasi sp return address parameter3 parameter2 parameter 1 Bilgisayar Organizasyonu

14 Bilgisayar Organizasyonu
Parametre aktarimi parameter1->$8 parameter2->$12 parameter3->$6 sw $8, 0($sp) add $sp, $sp, -4 sw $12, 0($sp) sw $6, 0($sp) jal proc proc: sw $31, 0($sp) . add $sp, $sp, -16 sw $8, 16($sp) sw $12, 12($sp) sw $6, 8($sp) jal proc proc: sw $31, 4($sp) . Eger activation record tek varlik olarak dusunulurse Bilgisayar Organizasyonu

15 Eger activation record tek bir varlik olarak dusunulurse
add $sp, $sp, -4 sw $12, 0($sp) sw $6, 0($sp) jal proc proc: sw $31, 0($sp) . Bilgisayar Organizasyonu

16 Calling procedure icinde parameter lara erisim
Ikinci cozum: parameter lari direkt olarak register uzerinden aktarmak SPARC ve Berkeley RISC de register windows kavrami var Load/store architecture da stack deki parameter lar erisim icin once register lara yuklenmeli lw $4, 16($sp) lw $5, 12($sp) lw $6, 8($sp) Bilgisayar Organizasyonu

17 Procedure dan deger geri cevirme
Procedure dan deger geri dondurmek parameter gecisine benzer. Fark bilgi akisi cagrilan procedure dan cagiran procedur a dogru Nested procedure larda deger stack uzerinden geri dondurulur Nested olmayan procedure larda hiz acisindan deger bir register la geri dondurulebilir Bilgisayar Organizasyonu

18 Bilgisayar Organizasyonu
Saving registers Bir procedure local variable lar, parameter lar ve gecici hesaplamalar icin cok sayida register a ihtiyac duyabilir Calling procedure nin kullanmakta oldugu bir register stack e itilip procedure dan donuste tekrar stackten yuklenmedikce kullanilamaz Dolayisiyle bir register hem calling procedure ve hem de called procedure tarafindan kullaniliyorsa, bu ilgili register activation record un bir parcasi olmak zorunda (procedure cagrimi esnasinda stack e itilmeli, ve procedure den donuste tekrar original degeri stackten geri alinmali) Bilgisayar Organizasyonu

19 Register lar ne zaman save edilmeli?
Called procedure register lari save edebilir Calling procedure register lari save edebilir Bilgisayar Organizasyonu

20 Called procedure tarafindan register save i
. jal procedure procedure: sw $31, 0($sp) # push return address add $sp, $sp, -4 add $sp, $sp, -12 # push register values and sw $8, 12($sp) # update stack pointer sw $9, 8($sp) sw $10, 4($sp) # procedure’s code here lw $10, 4($sp) # restore register lw $9, 8($sp) # values and lw $8, 12($sp) # update stack pointer add $sp, $sp, 4 add $sp, $sp, 4 # restore return address lw $31, 0($sp) jr $31 # return Avantaj: Sadece procedure tarafindan kullanilan register save edilir Dezavantaj: bazi registerlar gereksiz yere save edilebilir Bilgisayar Organizasyonu

21 Calling procedure tarafindan register save i
. add $sp, $sp, -12 # push register values sw $8, 12($sp) # update stack pointer sw $9, 8($sp) sw $10, 4($sp) jal procedure lw $10, 4($sp) # restore register values and lw $9, 8($sp) # update stack pointer lw $8, 12($sp) add $sp, $sp, 12 Procedure: sw $31, 0($sp) # push return address add $sp, $sp, -4 # procedure’s code here add $sp, $sp, 4 # restore return address lw $31, 0($sp) jr $31 # return Avantaj: Sadece calling procedure da kullanilan register lar save edilir Dezavantaj: bazi registerlar gereksiz yere save edilebilir Bilgisayar Organizasyonu


"Bilgisayar Organizasyonu" indir ppt

Benzer bir sunumlar


Google Reklamları