BLGM 325 Bilgisayar Mimarisi ve Organizasyonu Bilgisayar Mhendislii
BLGM 325 Bilgisayar Mimarisi ve Organizasyonu Bilgisayar Mühendisliği Bölümü Doğu Akdeniz Üniversitesi Assembly Kullanımı
Komutların Temsil Edilmesi ¡ . c Üst-seviye Assembly Makine C Program Derleyici. s Assembly Program Assembler. o Machine Object Module Object Bağlayıcı Executable Yükleyici Memory 2
Loader ¡ Loader used at run-time 1. 2. 3. 4. 5. 6. 7. Reads executable file header for size of text/data segments Create address space sufficiently large Copy instructions and data from executable into memory Copy parameters to main program’s stack Initialize machine registers and set SP Jump to start-up routine Makes exit system call when program is done 3
Makine Dili ¡ ¡ ¡ Tüm komutlar ayni uzunluktadır (32 bit) İyi tasarım uzlaşı ister l Ayni uzunluk ve ayni format 3 farklı format var l R: aritmetik komut formatı l I: transfer, branch, sabit (immediate) format l J: atlama (jump) komut formatı 4
Komut Formatları 6 bits 5 bit 6 bit R: op rs rt rd shamt funct I: op rs rt J: op adres / immediate hedef adres op: işlem kodu (opcode) rs: 1. kaynak yazmacı rt: 2. kaynak yazmacı rd: hedef yazmacı shamt: kaydırma miktarı (shift amount) funct: fonksiyon kodu (function code) address: load/store komutları için sabit sayı immediate: immediate komutları için sabit sayı 5
Örnek A[300] = h + A[300]; Derleyici lw $8, 1200($9) add $8, $18, $8 sw $8, 1200($9) # $8 =A[300] # $8 =h +A[300] # A[300]= h + A[300] Assembler 35 0 43 9 18 9 8 8 8 100011 000000 101011 010010 01001 01000 8 1200 0 1200 32 0000 0100 1011 0000 01000 00000 100000 0100 1011 0000 6
R-Formatı ¡ ¡ ALU ve komutlar tarafından kullanılır 3 yazmaç kullanır: 1 tane hedef, 2 tane de kaynak için Bitler 6 5 OP=0 rs 5 rt 5 rd 5 6 shamt funct 2. 1. sonuç kaydırma fonksiyon kodu kaynak yazmacı miktarı yazmacı ¡ Fonksiyon kodu, işlemin türünü belirler 7
R-Format Örnek ¡ add komutunu ele alalım add $8, $17, $18 ¡ Bitler Alanları şu şekilde doldururuz 6 5 OP=0 17 5 18 5 6 0 32 2. sonuç kaydırma fonksiyon 1. kodu kaynak yazmacı miktarı yazmacı 000000 10001 10010 01000 00000 100000 8
R-Format Sınırlamaları ¡ ¡ R-format ALU’yu kullanan komutlarda iyi çalışır, fakat diğer komutlar için bunu söyleyemeyiz lw komutunu ele alalım. Offset kullanıyor. Eğer R-formatını kullanırsa, offset için sadece 5 bit kalacaktı. l 2^5=32. (Ulşabileceği en büyük sayı 32 dir. Ancak kullanışlı değil!) Bundan dolayı, sadece 1 komut formatı kullanmak mümkün değil l 9
Immediates (Sabitler) ¡ ¡ ¡ Sabitler çok sık kullanılır (50%) l A = A + 5; l C = C – 1; Çözüm l Sabitleri belleğe koy ve oradan yükle Sabit kullanan MIPS komutları (I-format) l addi $8, $23, 4 # $8 = $23 + 4 8 001000 23 10111 8 01000 4 0000 0100 10
I-Format ¡ immediate komut formatı l l Bitler Her komut için farklı opcode kullanır Immediate alanı işaretli bir sayı içerir (pozitif/negatif) Load, store ve immediate komutlar için kullanılır (addi, lui, etc. ) Branch komutları (beq, bne) tarafından da kullanılır 6 5 OP rs 5 rt 2. 1. kaynak yazmacı 16 imm Immediate 11
I-Format Örnek ¡ addi komutunu ele alalım addi $8, $9, 1 ¡ # $8 = $9 + 1 Alanları şöyle doldururuz Bitler 6 5 8 9 5 8 2. 1. kaynak yazmacı 001000 01001 01000 16 1 Immediate 000000001 12
I-Formatı Örnek ¡ Aşağıdaki programı ele alalım Loop: mult $9, $10 lw $8, 0($9) bne $8, $21, Exit add $19, $20 j Loop # # # $9=4 xi $8 = A[i] goto Exit if != i + j goto Loop Exit: ¡ 1. komutun adres 80000’de olduğunu varsayalım 13
I-Format Örnek (Yanlış) ¡ bne komutunu ele alalım bne $8, $21, Exit ¡ # goto Exit if $8 != $21 Alanları şöyle dolduralım Bitler 6 5 5 8 5 21 2. 1. kaynak yazmacı 000101 ¡ 01000 10101 Bu doğru bir kodlama değildir 16 8 Immediate 0000001000 14
PC Göreceli Adresleme ¡ ¡ ¡ Branch yaparken immediate adres kullanımını nasıl geliştirebiliriz? Komutlar her zaman 32 bit uzunluğundadır ve her adres 4’ün katı olmak zorundadır Dolayısıyla, aslında PC + 4 + (4 immediate) adresine branch yaparız. 15
PC Göreceli Adresleme Branch komutları PC göreceli adresleme kullanır. Hedef adres, komut belleğinde B’nin etiketidir. PC-göreceli bayt adres = B – A Hedef-Adres = B= PC + 4×Imm 16 PC bir sonraki komutun adresini tutar = A 16 -bit işaretli immediate word adres= (B– A)/4 16
I-Format Örnek (Düzeltilmiş) ¡ bne komutunu tekrar elel alalım bne $8, $21, Exit ¡ # goto Exit if $8 != $21 İmmediate için PC-göreceli adreslemeyi kullanalım Bitler 6 5 5 8 5 21 2. 1. kaynak yazmacı 000101 01000 10101 16 2 Immediate 000000010 17
I-Format Örnek: Load/Store ¡ lw komutunu ele alalım lw $10, 0($9) ¡ # $10 = Mem[$9] Alanları dolduralım Bitler 6 5 35 9 5 10 2. 1. kaynak yazmacı 100011 01001 01010 16 0 Immediate 00000000 18
J-Format ¡ jump komutunun formatı l l Bitler Her komut için farklı opcode kullanır j ve jal komutları kullanır Uses word addressing as well (target 4) 228 bit heften gelir ve geriye kalan 4 bit de PC’in MSB tarafından gelir 6 26 OP Hedef (target) Atlama hedef adresi 19
J-Format 2 ¡ imm 26 Jump Adresi= PC’den 4 bit+4×imm 26 = (PC 31, PC 30, PC 29, PC 28, I 25, I 24, . . . , I 1, I 0, 0 , 0)2 PC’nin solundaki 4 -bit 26 -bit Immediate adres. 2 defa sola kayma (bayt-adres elde etmek için). 20
Tamamlanmış Örnek n Bir önceki programda yer alan «while loop» için aşağıdaki makine dilini oluşturabiliriz 80000 80004 80008 80012 80016 80020 … 0 19 10 35 5 9 8 8 21 0 19 20 2 9 0 24 0 2 19 0 32 20000 21
Adresleme Yöntemleri 1. Immediate addressing op rs rt Immediate 2. Register addressing op rs rt rd . . . funct Registers Register 3. Base addressing op rs rt Memory Address + Register 4. PC-relative addressing op rs rt Byte Halfword Word Address Memory *4 PC + Word 5. Pseudodirect addressing op Address *4 PC Memory Word 22
Adresleme Yöntemleri 1 - Yazmaç Adresleme ¡ Yazmaç adresi her zaman 5 -bit l l jr $31 add $3, $8, $9 23
Adresleme Yöntemleri 2 - Taban & Yerinden Etme Adresleme ¡ sw $5, 300 ($7) 16 -bit imm 24
Adresleme Yöntemleri 3 - Immediate adresleme ¡ immediate aritmetik-mantık komutları (addi, andi, ori, slti, lui ) tüm mantık addi ve slti komutları sıfır işaret 16 -bit -uzatmalı imm kullanır sayı kullanır 25
Adresleme Yöntemleri 4 - PC-göreceli adresleme ¡ beq ve bne PC-göreceli adresleme kullanır 26
Adresleme Yöntemleri 5 - Pseudo-Direk adresleme l J ve JAL 26 -bit imm. J alanı direk adres olarak kullanır. 27
- Slides: 27