Bilgisayar Organizasyonu

Slides:



Advertisements
Benzer bir sunumlar
KAFA Open-Source/Open-Implementation, 32-bit CPU
Advertisements

X86 Assembly Programlama Dilinde
8. SINIF 3. ÜNİTE BİLGİ YARIŞMASI
el ma 1Erdoğan ÖZTÜRK ma ma 2 Em re 3 E ren 4.
Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
BİLGİSAYAR, DONANIM VE YAZILIM KAVRAMLARI
Stored Procedure Öğr.Gör.Metin Akbulut.
SelCPU Temmuz 2008 Bilg.Bil.Müh.Selçuk BAŞAK SelSistem Bilgi ve İletişim Teknolojileri
Değişkenler ve bellek Değişkenler
NOKTA, DOĞRU, DOĞRU PARÇASI, IŞIN, DÜZLEMDEKİ DOĞRULAR
Yığın ve Kuyruk.
ÜNİTE DEĞERLENDİRMESİ 1.Sınıf Türkçe
Altprogramların Uygulanması
TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ
CPU Tasarım – 2 Single – Cycle CPU Veriyolu Tasarımı
Değişken Bildirimleri
VERİ TABANI ve YÖNETİMİ
Yarbaşı İlköğretim Yarbaşı İlköğretim.
Programlar Sabit diskte saklanır Sabit diskten veri okumak çok yava ş oldu ğ u için programlar çalı ş tırılmadan önce RAM’e yüklenir.
Java Programlama Koleksiyon(Collection) Sınıfları
Bölüm 3 – Yapısal Programlama
Nesneye Yönelik Programlama
ARALARINDA ASAL SAYILAR
NESNEYE YÖNELİK PROGRAMLAMA
Yapısal Program Geliştirme – if, if-else
HTML (HYPER TEXT MARKUP LANGUAGE) TEMEL ETİKETLERİ
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI
Fonksiyonlar Fonksiyon nedir?
Marmara Ünv. Bilgisayar Mühendisliği Bölümü
DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI
Register ve Türleri Nihal GÜNGÖR.
TEST – 1.
Intel P6 Architecture Mustafa Çayır.
HABTEKUS' HABTEKUS'08 3.
Mikroişlemciler ve Mikrobilgisayarlar
Bölüm 2 – Kontrol Yapıları
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Nesne.
8 ? E K S İ L E N EKSİLEN _ 5 5 ÇIKAN FARK(KALAN) 8.
Akış Kontrol Mekanizmaları
Özyineleme(Recursion)
DERS 5 PIC 16F84 PROGRAMLAMA.
Chapter 8: Advanced Method Concepts
Bilgisayar Programlama
İŞLEMCİ MİMARİLERİ – Derya Işık
Toplama Yapalım Hikmet Sırma 1-A sınıfı.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Amaçlar Bu derste öğrenilecekler: –Uygulamaları “method”
Partially Ordered Trees (POT)
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
8086 Programlama – Kısım III Prosedürler
BİLGİSAYAR MİMARİLERİ 2.Hafta: Bilgisayar Bileşenleri
BİLGİSAYAR MİMARİLERİ 7.Hafta: Çoklu-Çevrim İşlemci
ENDÜSTRİYEL GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı Arş. Gör. Pınar CİHAN.
Programlama Dillerinin Prensipleri
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Mikrobilgisayar Tasarım Yapıları
PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI
8086 Programlama – Kısım IV Stack’ler, Makro’lar
8086 Programlama – Kısım III Prosedürler
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H11
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
Bilgisayar Mühendisliğine Giriş
Mikrobilgisayar Tasarım Yapıları
Altprogramların gerçeklenmesi
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
Methods 2/22/2019 Java'da Programlama.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

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

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

Bilgisayar Organizasyonu Procedure Cagrimi .text . . call: jal proc . . done proc: # procedure code here procedure . body . jr $31 Bilgisayar 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) Bilgisayar 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 Bilgisayar 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) Bilgisayar Organizasyonu

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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