Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1Bilgisayar Organizasyonu Procedures Procedure kullanimi –Kodu moduler hale getirir, sonraki asamalarda programda degisiklik yapilmasini kolaylastirir.

Benzer bir sunumlar


... konulu sunumlar: "1Bilgisayar Organizasyonu Procedures Procedure kullanimi –Kodu moduler hale getirir, sonraki asamalarda programda degisiklik yapilmasini kolaylastirir."— Sunum transkripti:

1 1Bilgisayar 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

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

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

4 4Bilgisayar Organizasyonu 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)

5 5Bilgisayar Organizasyonu 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

6 6Bilgisayar Organizasyonu 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)

7 7Bilgisayar 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)

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

9 9Bilgisayar Organizasyonu Power function (recursive olarak).text. li$18,1# $18 will contain the result move$19, $17# $19 is a counter, $17 contains the power jalpower. 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 jalpower# 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

10 10Bilgisayar 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

11 11Bilgisayar 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.

12 12Bilgisayar Organizasyonu 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

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

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

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

16 16Bilgisayar Organizasyonu Calling procedure icinde parameter lara erisim 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) Ikinci cozum: parameter lari direkt olarak register uzerinden aktarmak SPARC ve Berkeley RISC de register windows kavrami var

17 17Bilgisayar Organizasyonu 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

18 18Bilgisayar 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)

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

20 20Bilgisayar Organizasyonu Called procedure tarafindan register save i. jalprocedure. 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

21 21Bilgisayar Organizasyonu 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) jalprocedure 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


"1Bilgisayar Organizasyonu Procedures Procedure kullanimi –Kodu moduler hale getirir, sonraki asamalarda programda degisiklik yapilmasini kolaylastirir." indir ppt

Benzer bir sunumlar


Google Reklamları