BBM 341 Sistem Programlama



Benzer belgeler
BBM 341 Sistem Programlama

BİL 220 Sistem Programlamaya Giriş

BİL 220 Sistem Programlamaya Giriş

BİL 220 Sistem Programlamaya Giriş

BİL 220 Sistem Programlamaya Giriş

Komut Seti Mimarisi (ISA)

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

MTM 305 MĠKROĠġLEMCĠLER

C İLE BUFFER OVERFLOW-2

ENF-106 C Programlama Dili Ders İçeriği. Grafik fonksiyonları C Programlama Dili Ders Notları Dr. Oğuz ÜSTÜN

16 bitlik işlemciler basit olarak 8 bitlik işlemciler gibi Kaydedici ALU Zamanlama/kontrol

ENF TEMEL BİLGİSAYAR BİLİMLERİ Eğitim/Öğretim Yılı Bahar Dönemi DÖNEM SONU LAB. ÖDEV TESLİM DUYURUSU

Komut Seti Mimarisi (ISA)

Araş. Gör. Abdulkerim ŞENOĞLU Araş. Gör. Mehmet AYAN Araş. Gör İbrahim Kök. BM 310 Mikroişlemciler Dersi Laboratuvarı (LAB2)

C Operatörler. Öğr. Gör. M. Ozan AKI. Rev 1.0

80x86 MICROPROCESSOR Instructions

8086 dan core2 ya yazaç yapısını tanımak. Bayrak yazacının içeriğinde yer alan bayrakların görevlerini tanımlamak. Real mod çalışmada bellek

Özet DERS 5. Şu ana kadar bilmeniz gerekenler... İşaretsiz Çarpma. Bayraklardaki Durumlar. İşaretli Çarpma

CSD-OS İşletim Sistemi Projesi - Fonksiyon Açıklama Standardı

Linux Assembly Programlamaya Giriş

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

int printf (const char *format [, argument,...]);

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Floating Point (Kayan Noktalı Sayılar)

Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR

8086 Mikroişlemcisi Komut Seti

4.2. SAYISAL MANTIK SEVİYELERİ VE DALGA FORMLARI

İYON DEĞİŞİMİ AMAÇ : TEORİK BİLGİLER :

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Proje konularından istediğiniz bir konuyu seçip, hazırlamalısınız.

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

BIL 362 Mikroilemciler Dersi Final Sınavı Cevapları

CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI

MTM 305 MİKROİŞLEMCİLER

MTM 305 MĠKROĠġLEMCĠLER

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

B02.8 Bölüm Değerlendirmeleri ve Özet

SORULAR VE ÇÖZÜMLER Adı- Soyadı : Fakülte No :

Ders Tanıtım Formu. Dersin Adı Öğretim Dili

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

İÇİNDEKİLER. 1. Projenin Amacı Proje Yönetimi Projenin Değerlendirilmesi Projenin Süresi Projenin Kapsamı...

OYUN GELİŞTİRME AŞAMALARI-I. Oyununuzun senaryosunu kısaca tanıtınız/ amacınıda belirtiniz:


MTM 305 MĠKROĠġLEMCĠLER

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Yazma Becerileri 2 YDA

AÖĞRENCİLERİN DİKKATİNE!

SLCM - Modül (Ders) Yaratılması

Algoritmalara Giriş 6.046J/18.401J

E-OKUL TASDİKNAME GİRİŞİ

DERS KAYITLARI HAKKINDA DUYURU

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

ÜNİTE 5 KESİKLİ RASSAL DEĞİŞKENLER VE OLASILIK DAĞILIMLARI

Ders Özeti. Ders 2. PC nin İç Organizasyonu. Mikroişlemcinin Organizasyonu. Basitçe İşlemciyi Oluşturan Parçalar. Mikroişlemciler

Temel Giriş/Çıkış Fonksiyonları (Devam) Örnek :

b) Aritmetik İşlem Komutları

OPERATÖRLER BÖLÜM Giriş Aritmetik Operatörler

ARAYÜZÜN TEKNİK ÖZELLİKLERİ

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

için kayıt kılavuzu

DERS SEÇME KOMUTLARI

Form ve Strüktür Ders İzlence Formu

uzman yaklaşımı Branş Analizi öğretim teknolojileri ve materyal tasarımı Dr. Levent VEZNEDAROĞLU

TÜBİTAK TÜRKİYE BİLİMSEL VE TEKNİK ARAŞTIRMA KURUMU BİLİM ADAMI YETİŞTİRME GRUBU ULUSA L İLKÖĞRETİM MA TEMATİK OLİMPİYADI DENEME SINAVI.

İKİ BOYUTLU GÖRSEL ARAÇLAR HARİTALAR

MARMARA ÜNİVERSİTESİ TEKNİK BİLİMLER MESLEKYÜKSEKOKULU BİLGİSAYAR TEKNOLOJİLERİ BÖLÜMÜ

Davranışçı Yaklaşımda Öğrenme Kuramları

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Mikrobilgisayar Mimarisi ve Programlama

TARİH ÖĞRETMENİ TANIM. Çalıştığı eğitim kurumunda, öğrencilere, tarih ile ilgili eğitim veren kişidir. A- GÖREVLER

360- ÖDENECEK VERGİ VE FONLAR HESABINA (GELİR VERGİSİ KESİNTİSİ) İLİŞKİN say2000i UYGULAMASI

BQTEK SMS Asistan. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

YSÖP KULLANIM KILAVUZU

Sınavın yapısı ve süre TPS İki aşamalı bir sınavdır. Birinci aşama: Görüntü Yorumlama 60 soru İkinci aşama: Mevzuat ve Uygulama teorik 40 soru Sınav

0 dan matematik. Bora Arslantürk. çalışma kitabı

ANADOLU ÜNİVERSİTESİ DEVLET KONSERVATUVARI YARI ZAMANLI PROGRAM YÖNERGESİ BİRİNCİ BÖLÜM. Amaç ve Kapsam, Dayanak ve Tanımlar

MTM 305 MİKROİŞLEMCİLER

Açık Lise nedir? Milli Eğitim Bakanlığı Hayat Boyu Öğrenme Genel Müdürlüğü

DİKEY GEÇİŞ SINAVI BİLGİLENDİRME SUNUMU SELÇUK ÜNİVERSİTESİ SOSYAL BİLİMLER MESLEK YÜKSEKOKULU

TARİHLİ EĞİTİM KOMİSYONU KARARLARI

T.C. Cumhuriyet Üniversitesi Fen Bilimler Enstitüsü

AVRASYA ÜNİVERSİTESİ

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı Ver:01

Enstitü Başvuru Sistemi Kullanım Kılavuzu


Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

MTM 305 MĠKROĠġLEMCĠLER

2 Ders Kodu: EMEZ202 3 Ders Türü: Zorunlu 4 Ders Seviyesi Önlisans

DERS KATEGORİSİ TEORİ+UYGULAMA (SAAT) Arapça kelimelerin türlerine göre eş ve zıt anlamları ile birlikte öğrenilip doğru kullanılmasının sağlanması

MUAFİYET VE İNTİBAK İŞLEMLERİ YÖNERGESİ

for döngüsü while döngüsü Döngüler MATLAB

T.C ATAŞEHİR ADIGÜZEL MESLEK YÜKSEKOKULU

DERS BİLGİ FORMU Üretim Takibi Giyim Üretimi Teknolojisi Kesimcilik

SANAYİNİN KÂRLILIK ORANLARI ÖNEMLİ ÖLÇÜDE AZALDI

Şekil İki girişli kod çözücünün blok şeması. Tablo İki girişli kod çözücünün doğruluk tablosu. Şekil İki girişli kod çözücü devre

ç) Yönetim Kurulu: Ağrı İbrahim Çeçen Üniversitesi Yönetim Kurulunu,

T.C. Cumhuriyet Üniversitesi Fen Bilimleri Enstitüsü

İÇİNDEKİLER. Sunuş , 3 ve 4. Sınıflar ve 3. Sınıflar Sınıf , 6, 7 ve 8. Sınıflar Sınıf Sınıf...

Alıştırma Toleransı -TERMİNOLOJİ

Transkript:

Öğrenci Adı Soyadı: Öğrenci Numarası: S1 S2 S3 S4 S5 Toplam Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü BBM 341 Sistem Programlama Ara Sınav Tarih: 19 Kasım 2012 Süre: 105 dak. Sınava başlamadan önce aşağıda yazılanları mutlaka okuyunuz Bu sınav kapalı kaynak bir sınavdır. Yani sınav süresince ilgili ders kitapları veya ders notlarınızdan faydalanmanız yasaktır. Size yardımcı olması açısından sonraki iki sayfada bazı Intel IA32/x86-64 Assembly komutlarının söz dizimleri ve diğer bazı ilgili tanımlar verilmiştir. Sınavda kopya çekmek yasaktır. Kopya çekmeye teşebbüs edenler hakkında ilgili idare işlemler kesinlikle başlatılacaktır. Her bir sorunun toplam ağırlığı soru numarasının ardında parantez içinde belirtilmiştir. Sınav toplam 100 puan üzerinden değerlendirilecektir. Sınav bu kapak sayfası dahil toplam 9 sayfadan oluşmaktadır. Lütfen kontrol ediniz BAŞARILAR Sayfa 1

Jump% Condi+on% Jumps Arithmetic Computa+on% Operations jmp 1% Jump% Condi+on% addl Src,Dest) Format% Dest%=%Dest%+%Src% Computa+on% je ZF% jmp 1% subl Src,Dest) Dest%=%Dest%@%Src% addl Src,Dest) Dest%=%Dest%+%Src% jne ~ZF% Sıçrama je İşlemleri ZF% imull Src,Dest) Aritmetik İşlemler Dest%=%Dest%*%Src% subl Src,Dest) Dest%=%Dest%@%Src% js SF% Sıçrama Koşul sall Src,Dest) Format Dest%=%Dest%<<%Src% İşlem jmp jne ~ZF% 1 imull Src,Dest) Dest%=%Dest%*%Src% addl Src,Dest Dest = Dest + Src jns ~SF% sarl Src,Dest) Dest%=%Dest%>>%Src% je js SF% ZF subl sall Src,Dest Src,Dest) Dest = Dest Dest%=%Dest%<<%Src% - jg ~(SF^OF)&~ZF% jne ~ZF shrl Src,Dest) imull Src,Dest Dest%=%Dest%>>%Src% = Dest * Src jns ~SF% sarl Src,Dest) Dest%=%Dest%>>%Src% jge ~(SF^OF)% js SF xorl Src,Dest) sall Src,Dest Dest%=%Dest%^%Src% = Dest << Src jns jg ~(SF^OF)&~ZF% ~SF sarl shrl Src,Dest Src,Dest) Dest = Dest Dest%=%Dest%>>%Src% jl (SF^OF)% adnl Src,Dest) Dest%=%Dest%&%Src% jg jge ~(SF^OF)% ~(SF^OF)&~ZF shrl xorl Src,Dest Src,Dest) Dest = Dest Dest%=%Dest%^%Src% >> jle (SF^OF) ZF% jge ~(SF^OF) orl Src,Dest) xorl Src,Dest Dest%=%Dest% %Src% = Dest ^ Src ja ~CF&~ZF% jl jl (SF^OF)% andl adnl Src,Dest Src,Dest) Dest = Dest Dest%=%Dest%&%Src% & Src jle jle (SF^OF) ZF% Memory Operations orl Src,Dest Dest = Dest jb CF% orl Src,Dest) Dest%=%Dest% %Src% ja ~CF&~ZF incl Src Dest = Dest + 1 ja ~CF&~ZF% Format% Computa+on% jb CF decl Src Dest = Dest - 1 Memory Operations jb CF% (Rb, Ri) negl Mem[Reg[Rb]+Reg[Ri]]% Src Dest = - Dest D(Rb,Ri) notl Format% Mem[Reb[Rb]+Reg[Ri]+D] Src Dest Computa+on% = ~ Dest (Rb,Ri,S) Bellek (Rb, İşlemleri Mem[Reg[Rb]+S*Reg[Ri]] Ri) Mem[Reg[Rb]+Reg[Ri]]% Format İşlem (Rb, Ri) D(Rb,Ri) Mem[Reg[Rb]+Reg[Ri]] Mem[Reb[Rb]+Reg[Ri]+D] Registers D(Rb, (Rb,Ri,S) Ri) Mem[Reb[Rb]+Reg[Ri]+D] Mem[Reg[Rb]+S*Reg[Ri]] 63%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15%%%%%%%%%%%%8%7%%%%%%%%%%%0% (Rb, Ri, S) Mem[Reg[Rb]+S*Reg[Ri]] %rax %eax %ax %ah %al Return%value% Yazmaçlar Registers (Registers) %rbx %ebx %bx %bh %bl Linux Stack Linux Yığıt (Stack) Yapısı %rcx %rdx %rsi %rdi %rbp %rsp %r8 %r9 %r10 %r11 %r12 %r13 %r14 %r15 63%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31%%%%%%%%%%%%%%%%%%%%%%%%%%%%%15%%%%%%%%%%%%8%7%%%%%%%%%%%0% %ecx %cx %ch %cl %rax %eax %ax %ah %al %edx %dx %dh %dl %rbx %ebx %bx %bh %bl %esi %si %rcx %edi %di %rdx %ebp %bp %rsi %esp %sp %rdi %rbp %r9d %r9w %rsp %r10d %r10w %r8 %r9 %r10 %r13d %r13w %r11%r14d %r14w %r12%r15d %r15w %r13 %r14 %r15 %r8d %r8w %r11d %r11w %r12d %r12w Format% %sil %ecx %cx %ch %cl %dil %edx %dx %dh %dl %bpl %esi %si %spl %edi %di %r8b %ebp %bp %r9b %esp %sp %r10b %r8d %r8w %r11b %r9d %r9w %r12b %r10d %r10w %r13b %r11d %r14b %r11w %r12d %r15b %r12w %r13d %r13w %r14d %r14w %r15d %r15w Argument%#4% Argument%#3% Argument%#2% Argument%#1% %sil Stack%Pointer% Argument%#5% Argument%#6% Reserved% %dil %bpl %spl %r8b Used%for%linking% %r9b %r10b %r11b %r12b %r13b %r14b %r15b Return%value% Argument%#4% Argument%#3% Argument%#2% Argument%#1% Stack%Pointer% Argument%#5% Argument%#6% Reserved% Used%for%linking% linking Caller Frame% %ebp %esp Arguments% Caller Return%Addr% Frame% Old%%ebp% Saved Registers + %ebp Local Variables% Argument Build% Linux Stack %esp Argume Return%A Old%%e Saved Registe + Loca Variabl Argume Build Sayfa 2

ific Cases of Alignment (IA32) ific Cases of Alignment (IA32) e: char, C%Data%Type Intel%IA32 x86@64 : char, C%Data%Type Intel%IA32 x86@64 restrictions on address o restrictions on address char es: short, char 1 1 s: short, short owest bit of address must be 02 short 2 2 owest 1 bit of address must be 02 es: int, float, char *, Özel Hizalama Durumları (Intel IA32) int C Veri Tipi IA-32 X86-64 s: int, float, char *, int 4 4 owest bits of address must 1 byte: be char, 002... long char 1 owest 2 bits of address must be 1 sınırlandırma 002 long 4 8 yok es: double, long%long short 2 s: double, 2 long%long 8 8 indows (and most other 2 OSs bytes: short, instruction... sets): indows (and most other OSs & instruction sets): float int 4 4 float 4 4 lowest bits of address must en düşük be 0002 bit adresi 0 2 lowest 3 bits of address must be 0002 double long 4 8 inux: double 8 8 inux: 4 bytes: int, float, char *,... long long long%double 10/12 8 10/16 8 lowest bits of address must en düşük be 002 2 bit adresi 00 long%double 10/12 10/16 lowest 2 bits of address must be 002 2 float 4 4 i.e., treated the same as 4-byte primitive data type pointer i.e., treated the same as a 4-byte primitive data type pointer 4 8 8 bytes: double,... double 8 8 tes: long double tes: long double Windows: en düşük 3 bit adresi 000 2 long double 10/12 10/16 indows, Linux: indows, Linux: Linux: en düşük 2 bit adresi 00 2 pointer 4 8 lowest bits of address must be 002 lowest 2 bits of address must be 002 i.e., treated the same 12 bytes: as 4-byte long primitive double data type i.e., treated the same as a 4-byte Windows primitive & Linux: data type en düşük 2 bit adresi 00 2 ific Cases of Alignment Özel (x86-64) Hizalama Durumları (Intel x86-64) Byte Ordering Bayt Sıralama (Byte Ordering) ific Cases of Alignment (x86-64) Byte Ordering e: char, 1 byte: char,... 4-byte 0x100 variable adresinde 0x01234567 4-bayt lık at 0x100 değişken : char, 4-byte variable 0x01234567 at 0x100 sınırlandırma yok 0x01234567 restrictions on address o restrictions on address es: short, Big Endian s: short, 2 bytes: short,... Big Endian Big Endian owest bit of address must be 02 Least significant byte has highest address owest 1 bit of address must be 02 en düşük bit adresi 0 2 Least significant En anlamsız byte has bayt highest en yüksek address adreste es: int, float, 0x100 0x101 0x102 0x103 s: int, float, owest bits of address must 4 bytes: be 002 int, float,... 0x100 0x101 0x102 0x103 owest 2 bits of address must be 002 01% 23% 45% 67% es: double, char *, en düşük 2 bit adresi 00 2 01% 23% 45% 67% s: double, char *, indows Linux: Little Endian indows & Linux: Little Endian 8 bytes: double, char *,... Little Endian lowest bits of address must be 0002 Least significant byte has lowest address lowest 3 bits of address must Windows be 0002 & Linux: Least significant En anlamsız byte has bayt lowest en düşük address adreste tes: long double 0x100 0x101 0x102 0x103 tes: long double en düşük 3 bit adresi 000 2 0x100 0x101 0x102 0x103 inux: 67% 45% 23% 01% inux: 67% 45% 23% 01% lowest bits of address 16 bytes: must long be 0002 double lowest 3 bits of address must be 0002 i.e., treated the same as Linux: 8-byte primitive en düşük data 3 bit type adresi 000 i.e., treated the same as a 8-byte primitive data type 2 ting Point ting Point k-1 1 = 2 k-1 1 Kayan noktalı sayı (floating point) Bias = 2 k-1 1 Sayfa 3

Soru 1. (17 puan) Tamsayı gösterimleri. 6-bit ve 4-bit lik iki bilgisayar sistemi (M1 ve M2) üzerinde, İşaretli tam sayılar (signed integers) için ikili tümler (2 s complement) aritmetiği kullanılmaktadır. short tamsayılar M1 de 3-bit, M2 de ise toplam 2-bit ile gösterilmektedir. Bir short açıkça int e dönüştürülürken (cast edilirken) işaret genişletmesi (sign extension) kendiliğinden gerçekleşmektedir. int ler üzerinde sağa kaydırma aritmetik kaydırma (arithmetic shift) işlemi ile gerçekleşmektedir. Bu varsayımlara göre aşağıdaki tanımları göz önünde bulundurarak altta verilen tablodaki boş kutucukları doldurunuz. NOT: ile belirtilen bölümleri doldurmanıza gerek yoktur. int a = 2; int b = -2*a; short sa = (short) b; unsigned ub = b; İfade M1 sisteminde tam sayı gösterimi M1 sisteminde ikili gösterimi M2 sisteminde tam sayı gösterimi M2 sisteminde ikili gösterimi 19 11 01 b sa ub a << 2 b >> 1 Tmax a b a^(-1) Sayfa 4

Soru 2. (20 puan) Kayan noktalı sayı gösterimleri. Bu soruyu IEEE Standard 754 kayan noktalı sayı formatına göre oluşturulan 8-bit lik bir kayan noktalı gösterimine göre cevaplayınız. Bu gösterimde, En anlamlı bit (the most significant bit) işaret bit idir. İşaret bit inin ardından gelen 3 bit kayan noktalı sayının üstünü (exponent) verir. Geri kalan 4 bit ise kesirli kısmı (fraction) belirtir. NOT: Aşağıdaki soruları cevaplarken hem kesirli gerçek değerleri hem de ikili gösterimleri belirtiniz. (a) (2 puan) Bu gösterimde üst için kaydırma değeri (exponent bias) nedir? (b) (2 puan) Bu gösterimde ifade edilen en küçük pozitif sayı nedir? (c) (2 puan) Bu gösterimde normalize olmayan en büyük pozitif sayı nedir? (d) (2 puan) Bu gösterimde normalize olan en küçük pozitif sayı nedir? (e) (2 puan) Bu gösterimde pozitif sonsuz nasıl ifade edilmektedir? (f) (5 puan) Aşağıda verilen tablodaki boş kutucukları doldurunuz. Eğer bilgisayardaki gösterimde yuvarlama gerekiyor ise çifte-yuvarlama (round-toeven) yapmalısınız İkili gösterim Ondalıklı Değer 0 000 0000 0 1 110 0001 1 000 1101-11 1/4 23/256 Sayfa 5

Soru 3. (24 puan) Assembly/C çevrimi. Aşağıda bir C fonksiyonu için derleyici tarafından üretilen Assembly kodu gösterilmektedir: 08048380 <foo>: 8048380: push %ebp 8048381: mov %esp,%ebp 8048383: mov 0x8(%ebp),%edx 8048386: cmp $0x40,%edx 8048389: ja 80483b1 <foo+0x31> 804838b: mov $0x20,%ecx 8048390: test $0x3,%dl 8048393: jne 804839c <foo+0x1c> 8048395: jmp 80483b1 <foo+0x31> 8048397: test $0x3,%dl 804839a: je 80483b6 <foo+0x36> 804839c: mov %ecx,%eax 804839e: shr $0x1f,%eax 80483a1: add %ecx,%eax 80483a3: sar %eax 80483a5: lea 0x1(%eax),%ecx 80483a8: add %edx,%edx 80483aa: cmp $0x40,%edx 80483ad: jbe 8048397 <foo+0x17> 80483af: jmp 80483b6 <foo+0x36> 80483b1: mov $0x20,%ecx 80483b6: mov %ecx,%eax 80483b8: pop %ebp 80483b9: ret Yukarıda verilen Assembly koduna göre aşağıdaki C kodunda yer alan boşlukları doldurunuz. unsigned foo(unsigned x) { int y, z; for(z = ; ; ) { y = ; if (y == 0) { ; ; return z; Sayfa 6

Soru 4. (32 puan) Yöntemler ve yığıt. Aşağıda iki C fonksiyonu ve ilgili Assembly kodları verilmektedir: int fun1 (int x, int *y) { return 24*x+*y; int fun2(int x, int y) { return fun1(y, &x); 08048374 <fun1>: 8048374: push %ebp 8048375: mov %esp,%ebp 8048377: mov 0x8(%ebp),%eax 804837a: lea (%eax,%eax,2),%eax 804837d: shl $0x3,%eax 8048380: mov 0xc(%ebp),%edx 8048383: add (%edx),%eax 8048385: pop %ebp 8048386: ret 08048387 <fun2>: 8048387: push %ebp 8048388: mov %esp,%ebp 804838a: sub $0x8,%esp 804838d: lea 0x8(%ebp),%eax 8048390: mov %eax,0x4(%esp) 8048394: mov 0xc(%ebp),%eax 8048397: mov %eax,(%esp) 804839a: call 8048374 <fun1> 804839f: leave 80483a0: ret (a) (24 puan) fun2(1,2) fonksiyon çağrısından başlayarak fun1 fonksiyonundaki ret komutunun işletilmesinden hemen önceki yığıtın detaylı içeriğini aşağıdaki diyagram üzerinde belirtiniz. Bu soruyu çözerken, Yığıt diyagramı fun2 fonksiyonunun iki argümanı ile başlamalıdır, örnek olması açısından argümanlardan biri sizin yerinize yerleştirilmiştir. Yığıt içeriğini belirtirken değişken isimleri yerine gerçek değerleri kullanınız. %ebp yazmacının değerini yığıt üzerine yerleştirmeniz gerekiyorsa bu değerin %ebp ye ait olduğunu da açıkça belirtiniz, örneğin %ebp: 0xffff1400. Size sağlanan yığıt diyagramında tüm kutucukları kullanmanıza gerek olmayabilir. Sayfa 7

fun2 cagrisi gerceklestirildigi anda %ebp degeri: 0xffffd858 fun2 cagrisindan geri donus adresi: 0x080483c9 Yigit Asagidaki diyagram fun2 fonksiyonuna gerceklestiren adresleri bir cagrinin ardindaki durumu gostermektedir 0xffffd850 2 0xffffd84c 0xffffd848 0xffffd844 0xffffd840 0xffffd83c 0xffffd838 0xffffd834 0xffffd830 (b) (4 puan) fun1 için ret komutunun çalıştırılmasının hemen öncesinde %ebp nin değeri nedir? %ebp: 0x (c) (4 puan) fun1 için ret komutunun çalıştırılmasının hemen öncesinde %esp nin değeri nedir? %esp: 0x Sayfa 8

Soru 5. (7 puan) Okuma ödevleri. (a) (2 puan) IEEE-754 kayan noktalı sayı formatında sıfır sayısının +0 ve -0 olarak iki farklı temsilinin olması ne gibi bir avantaj sağlamaktadır? 1-2 cümle ile açıklayınız. (b) (2 puan) Hangi iki Bell Labs çalışanı hem Unix işletim sisteminin hem de C programlama dilinin geliştirilmesinde aktif rol almışlardır? Soyadlarını yazmanız yeterlidir. (c) (3 puan) Daha sonra Intel tarafından kısmen benimsenen ilk olarak AMD nin geliştirdiği x86-64 komut kümesinin Intel in bir başka 64-bit lik mimarisi olan IA-64 den en temel farkı nedir? Sayfa 9