Top Banner
BİLGİSAYAR MİMARİSİ Computer Architecture Bölüm 4 Prof.Dr. Ahmet Sertbaş İstanbul Üniversites .
27

Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

Oct 15, 2014

Download

Documents

İsmail Filiz
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

BİLGİSAYAR MİMARİSİ Computer Architecture

Bölüm 4

Prof.Dr. Ahmet Sertbaş

İstanbul Üniversitesi .

Page 2: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

TEMEL BİLGİSAYAR PROGRAMLAMA

Giriş

Makina Dili

Sembolik (Assembly) Dili

Assembler

Program Döngüleri

Aritmetik ve Lojik İşlemlerin Programlanması

Altprogramlar

Giriş-Çıkış Programlama

Page 3: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

GİRİŞ

Bilgisayar Mimarisi hem donanım hem yazılım bilgisini içermelidir. Zira, her iki alan da birbirlerini etkiler.

Bu bölümde, temel programlama kavramları ve donanımsalgerçeklemeleri ile ilişkileri verilmektedir.

Kullanıcı sembolik programı ikili kod karşılıklarına dönüştüren program (assembler) yapısı incelenecektir.

Makine Dili Programlama yapısı ve komutları TB organizasyonu açısından ele alınacaktır.

Page 4: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

MAKİNA DİLİ• Program Gerekli data işlem görevini yürütmek için, bilgisayarı yönlendiren ifadeler ve komutlar listesi

• Çeşitli Türlerde Programlama Dilleri - Programlama Dilleri Hiyerarşik Düzeni

• Makina– dili (Bilgisayar donanımının tanıdığı dil) - İkili Kod

- Sekizli (Octal) veya Onaltılı (hexadecimal) Kod

• Sembolik Dil (Assembler) - Sembolik Kod (harfler, sayılar ve alfanümerik kar.) Her sembolik komut ikili kod karşılığına dönüştürülür (assembly)

• Yüksek Seviyeli Dil (Compiler-Derleyici) Problem çözüm odaklı komutlar. (Fortran, Pascal, C vs…) Derleyici bu komutları ikili kod karşılıklarına dönüştürür.

Page 5: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

Sembol Hex Kodu Açıklama

m: Efektif adres 25 farklı komut 7 MRI komut, 18 non-MRI komut M: Bellek kelimesi (operand) (bellek ref.) (saklayıcı veya I/O ref.)

AND 0 or 8 AND M to ACADD 1 or 9 Add M to AC, carry to ELDA 2 or A Load AC from MSTA 3 or B Store AC in MBUN 4 or C Branch unconditionally to mBSA 5 or D Save return address in m and branch to m+1ISZ 6 or E Increment M and skip if zeroCLA 7800 Clear ACCLE 7400 Clear ECMA 7200 Complement ACCME 7100 Complement ECIR 7080 Circulate right E and ACCIL 7040 Circulate left E and ACINC 7020 Increment AC, carry to ESPA 7010 Skip if AC is positiveSNA 7008 Skip if AC is negativeSZA 7004 Skip if AC is zeroSZE 7002 Skip if E is zeroHLT 7001 Halt computerINP F800 Input information and clear flagOUT F400 Output information and clear flagSKI F200 Skip if input flag is onSKO F100 Skip if output flag is onION F080 Turn interrupt onIOF F040 Turn interrupt off

Temel Bilgisayarın Komut Kümesi

Page 6: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

PROGRAMLAMA DİLLERİNİN KARŞILAŞTIRILMASI

0 0010 0000 0000 01001 0001 0000 0000 0101

10 0011 0000 0000 011011 0111 0000 0000 0001

100 0000 0000 0101 0011101 1111 1111 1110 1001110 0000 0000 0000 0000

• İki Sayıyı Toplamak için İkili Program

Adres Komut Kodları 000 2004001 1005002 3006003 7001004 0053005 FFE9006 0000

• Hex program Adres Komutlar

• Sembolik OP-kodlu Program

000 LDA 004 Load 1st operand into AC001 ADD 005 Add 2nd operand to AC002 STA 006 Store sum in location 006003 HLT Halt computer004 0053 1st operand005 FFE9 2nd operand (negative)006 0000 Store sum here

Adres Komutlar Açıklamalar

• Sembolik Dil (Assembler) Program

• Fortran Program

INTEGER A, B, CDATA A,83 / B,-23C = A + BEND

ORG 0 /Origin of program is location 0

LDA A /Load operand from location A

ADD B /Add operand from location B

STA C /Store sum in location C HLT /Halt computer

A, DEC 83 /Decimal operandB, DEC -23 /Decimal operandC, DEC 0 /Sum stored in location C

END /End of symbolic program

Page 7: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ASSEMBLY DİLİ TB assembly dilinin özellikleri Assembly dili prog. satırı alan (field) diye anılan 3 bölümden oluşur. Etiket Alanı

3 karakterli (1. harf, 2-3 harf veya rakam) sembolik bir adres veya boşVirgül ile sonlandırılır

Komut Alanı• Makina veya Yalancı (Pseudo) komut belirler.• Komut

1. Bellek Referanslı komut (MRI)• MRI boşluklarla ayrılmış 2 veya 3 sembol içerir

ADD OPR (direk adresli komut MRI) ADD PTR I (dolaylı adresli komut MRI)

• Saklayıcı Referanslı veya giriş-çıkış komutları . 1. Non-MRI bir adres alanı yoktur CLA gibi….2. Yalancı komutlar bir operanda sahip olabilir

• Komut alanında kullanılan sembolik adresler bir etiket olarak tanımlıdır Açıklama Alanı Boş olabilir veya bir açıklama içerebilir. / işareti assembler için açıklama alanı belirler.

Page 8: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

YALANCI (PSEUDO) KOMUTLARORG N N hex sayısı aşağıdaki satırda listelenen komut veya operand için bir bellek adresidir. Programın hangi bellek adresinden başlayacağını veya operandın alınacağı adresi belirler.

END Sembolik programın sonunu belirler DEC N İşaretli onlu N sayısı ikili eşdeğerine dönüştürülür. HEX N Hex N sayısı ikili eşdeğerine dönüştürülür.

Örnek: İki sayıyı çıkarmak için bir assembler program

ORG 100 / Origin of program is location 100LDA SUB / Load subtrahend to ACCMA / Complement ACINC / Increment ACADD MIN / Add minuend to ACSTA DIF / Store differenceHLT / Halt computer

MIN, DEC 83 / MinuendSUB, DEC -23 / SubtrahendDIF, HEX 0 / Difference stored here

END / End of symbolic program

Page 9: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

İKİLİ DEĞERE DÖNÜŞÜM(Assembling)

ORG 100LDA SUBCMAINCADD MINSTA DIFHLTDEC 83DEC -23HEX 0END

MIN,SUB,DIF,

100 2107101 7200102 7020103 1106104 3108105 7001106 0053107 FFE9108 0000

Sembolik ProgramAdres İçerik

Hex Kod

Page 10: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ASSEMBLER BİRİNCİ TARAMA

Assembler

Kaynak Program - Sembolik Assembly Dili Program Obje Program - İkili Makina Dili Program

İki Taramalı Assembler

Birinci Tarama: Kullanıcını tanımladığı tüm sembolleri (adres) ikili eşdeğerleri ile ilişkilendiren bir tablo üretilir. İkinci Tarama: ikili dönüşüm

Page 11: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ASSEMBLER BİRİNCİ TARAMA

Birinci Tarama

LC := 0

Bir Sonraki Komut Satırını Tara LC ye yeni değer ata

Etikethayır

evet

ORG

Adres Sembol Tablosundaki

sembolleri ve LC değerini sakla

evet

END

hayır

LC = LC +1

İkinci Taramaya

git

hayır

evet

Page 12: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

Makine Komutları LUT (look-up table) yöntemiyle dönüştürülür:

1. Yalancı (Pseudo) Komut Tablosu, 2. MRI Tablosu (bellek ref. komutlar)3. Non-MRI Tablosu (saklayıcı veya I/O ref.)4. Adres Sembol Tablosu

Birinci Taramada

Üretilen

ASSEMBLER İKİNCİ TARAMA

Page 13: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ASSEMBLER İKİNCİ TARAMA

Komutun tüm ikili kısımlarını analiz et ve

LC nin belirlediği adreste sakla

LC yi ayarla

evet

ORG ENDhayır

BİTTİ

evet

geçernon-MRI

komut.

Convertoperandto binaryand storein locationgiven by LC

hayır

DEC veya HEX

Kod Satırında hata

LC nin belirlediği adresteki komut ikili eşdeğerlerini sakla

evet

hayır

I

Sembolik adrslerin ikili değerleri için Sembolik tablodan adresaraştırrVe 5-16 bitleri ayarla

İşlem kodlarını al ve bit 2-4 set

İlk biti sıfırla

evet hayır

İlk biti 1 yap

LC = LC + 1

İkinci Tarama

LC 0

Bir Sonraki Komut Satırını Tara

hayır

Pseudokomutlar

evet

hayırMRI

evet

Page 14: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

PROGRAM DÖNGÜLERİ

DIMENSION A(100)INTEGER SUM, ASUM = 0DO 3 J = 1, 100SUM = SUM + A(J)3

Döngü: Farklı bir data seti için, aynı programın pekçok kez icra edilmesi işlemi

100 sayıyı toplayan bir FORTRAN program:

Page 15: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

PROGRAM DÖNGÜLERİ

ORG 100LDA ADSSTA PTRLDA NBRSTA CTRCLAADD PTR IISZ PTRISZ CTRBUN LOPSTA SUMHLTHEX 150HEX 0DEC -100HEX 0HEX 0ORG 150DEC 75

DEC 23END

/ Origin of program is HEX 100/ Load first address of operand/ Store in pointer/ Load -100/ Store in counter/ Clear AC/ Add an operand to AC/ Increment pointer/ Increment counter/ Repeat loop again/ Store sum/ Halt/ First address of operands/ Reserved for a pointer/ Initial value for a counter/ Reserved for a counter/ Sum is stored here/ Origin of operands is HEX 150/ First operand

/ Last operand/ End of symbolic program

LOP,

ADS,PTR,NBR,CTR,SUM,

.

.

.

100 sayıyı toplamak için Assembly-dili program

Page 16: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ARİTMETİK VE LOJİK İŞLEMLERİN PROGRAMLANMASI

• Yazılımsal Gerçekleme

- Makine Komut Kümesini kullanarak bir program ile bir işlemin gerçeklenmesi - Genellikle işlem komut kümesinde yer almıyorsa yazılımsal olarak gerçeklenir.

• Donanımsal Gerçekleme - Bir makine komutu olarak bilgisayarda bir işlemin gerçeklenmesidir.

Yazılımsal Gerçekleme Örneği:

•Çarpma- Basitlik açısından sayılar işaretsiz pozitif olsunlar.- 8-bit sayılar16-bit çarpım sonucu

Aritmetik ve Lojik İşlemlerin Gerçeklenmesi

Page 17: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ÇARPMA PROGRAMI AKIŞ ŞEMASI

X çarpılanı tutarY çarpanı tutar.rP kısmi çarpım terimlerini tutar

4 anlamlı bit taşıyan X ve Y sayılarının Çarpımı

0000 1111 0000 1011 0000 00000000 1111 0000 11110001 1110 0010 11010000 0000 0010 11010111 1000 1010 01011010 0101

CTR - 8P 0

E 0

AC Y

Y AC

cir EAC

E

P P + X

E 0

AC X

cilcil EAC

X AC

CTR CTR + 1

=1=0

CTR =0Stop

0

X =Y =

P

Page 18: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ASSEMBLY DİLİ PROGRAMIÇARPMA

ORG 100CLELDA YCIRSTA YSZEBUN ONEBUN ZROLDA XADD PSTA PCLELDA XCILSTA XISZ CTRBUN LOPHLTDEC -8HEX 000FHEX 000BHEX 0END

/ Clear E/ Load multiplier/ Transfer multiplier bit to E/ Store shifted multiplier/ Check if bit is zero/ Bit is one; goto ONE/ Bit is zero; goto ZRO/ Load multiplicand/ Add to partial product/ Store partial product/ Clear E/ Load multiplicand/ Shift left/ Store shifted multiplicand/ Increment counter/ Counter not zero; repeat loop/ Counter is zero; halt/ This location serves as a counter/ Multiplicand stored here/ Multiplier stored here/ Product formed here

LOP,

ONE,

ZRO,

CTR,X,Y,P,

Page 19: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ASSEMBLY DİLİ PROGRAMI

Çift Prezisyonlu TOPLAMA

LDA ALADD BLSTA CLCLACILADD AHADD BHSTA CHHLT

--- 16 bit sayı--- 16 bit sayı--- 16 bit sayı--- 16 bit sayı------

/ Load A low/ Add B low, carry in E/ Store in C low/ Clear AC/ Circulate to bring carry into AC/ Add A high and carry/ Add B high/ Store in C high

AL,AH,BL,BH,CL,CH,

Page 20: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ASSEMBLY DİLİ PROGRAMILojik ve Öteleme İşlemleri

• Lojik İşlemler

- Temel Bilg. komutları : AND, CMA, CLA- OR işlemi için program

LDA ACMASTA TMPLDA BCMAAND TMPCMA

/ Load 1st operand/ Complement to get A’/ Store in a temporary location/ Load 2nd operand B/ Complement to get B’/ AND with A’ to get A’ AND B’/ Complement again to get A OR B

•Öteleme İşlemleri- TB. Komutu: CIR, CIL

- Lojik Sağa Ötelemeişlemi - Lojik Sola Öteleme işlemi CLE CLE CIR CIL

- Aritmetik sağa öteleme işlemi CLESPACMECIR

/ Clear E to 0/ Skip if AC is positive/ AC is negative/ Circulate E and AC

De Morgan theorem

Page 21: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ALTPROGRAM- Bir programda pekçok kez kullanılabilen ortak komut kümesi.-Altprogram Bağlantısı: Altprograma dallanma ve ana programa geri dönme prosedürü

ORG 100LDA XBSA SH4STA XLDA YBSA SH4STA YHLTHEX 1234HEX 4321

HEX 0CILCILCILCILAND MSKBUN SH4 IHEX FFF0END

/ Main program/ Load X/ Branch to subroutine/ Store shifted number/ Load Y/ Branch to subroutine again/ Store shifted number

/ Subroutine to shift left 4 times/ Store return address here/ Circulate left once

/ Circulate left fourth time/ Set AC(13-16) to zero/ Return to main program/ Mask operand

X,Y,

SH4,

MSK,

100101102103104105106107108

10910A10B10C10D10E10F110

Loc.

Altprogram

Örnek:

Page 22: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ALTPROGRAM PARAMETRELERİ ve DATA BAĞLANTILARI

ORG 200LDA XBSA ORHEX 3AF6STA YHLTHEX 7B95HEX 0HEX 0CMASTA TMPLDA OR ICMAAND TMPCMAISZ ORBUN OR IHEX 0END

/ Load 1st operand into AC/ Branch to subroutine OR/ 2nd operand stored here/ Subroutine returns here

/ 1st operand stored here/ Result stored here/ Subroutine OR/ Complement 1st operand/ Store in temporary location/ Load 2nd operand/ Complement 2nd operand/ AND complemented 1st operand/ Complement again to get OR/ Increment return address/ Return to main program/ Temporary storage

X,Y,OR,

TMP,

20020120220320420520620720820920A20B20C20D20E20F210

Loc.

Örnek: Lojik OR işlemi altprogram bağlantısı 2 parametre ile sağlanması

Ana program ve altprogram arasındaki data ve parametre bağlantıları- Saklayıcılar

- Bellek Kelimeleri üzerinden kurulur.

Page 23: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

ALTPROGRAM Data Bloğunun Transferi

BSA MVEHEX 100HEX 200DEC -16HLTHEX 0LDA MVE ISTA PT1ISZ MVELDA MVE ISTA PT2ISZ MVELDA MVE ISTA CTRISZ MVELDA PT1 ISTA PT2 IISZ PT1ISZ PT2ISZ CTRBUN LOPBUN MVE I------

/ Main program/ Branch to subroutine/ 1st address of source data/ 1st address of destination data/ Number of items to move

/ Subroutine MVE/ Bring address of source/ Store in 1st pointer/ Increment return address/ Bring address of destination/ Store in 2nd pointer/ Increment return address/ Bring number of items/ Store in counter/ Increment return address/ Load source item/ Store in destination/ Increment source pointer/ Increment destination pointer/ Increment counter/ Repeat 16 times/ Return to main program

MVE,

LOP,

PT1,PT2,CTR,

• Fortran altprogramı

SUBROUTINE MVE (SOURCE, DEST, N)DIMENSION SOURCE(N), DEST(N)DO 20 I = 1, NDEST(I) = SOURCE(I)RETURNEND

20

Page 24: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

GİRİŞ-ÇIKIŞ PROGRAMLAMA

Bir Karakter (Byte) Girme Programı:

SKIBUN CIFINPOUTSTA CHRHLT--

/ Check input flag / Flag=0, branch to check again / Flag=1, input character / Display to ensure correctness / Store character

/ Store character here

CIF,

CHR,

LDA CHRSKOBUN COFOUTHLTHEX 0057

/ Load character into AC/ Check output flag/ Flag=0, branch to check again/ Flag=1, output character

/ Character is "W"

COF,

CHR,

Bir Karakter (Byte) Çıkarma Programı:

Page 25: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

KARAKTER İŞLEME

2 Karekter girme ve bir kelime haline getirme altprogramı

--SKIBUN FSTINPOUTBSA SH4BSA SH4SKIBUN SCDINPOUTBUN IN2 I

/ Subroutine entry

/ Input 1st character

/ Logical Shift left 4 bits/ 4 more bits

/ Input 2nd character

/ Return

IN2,FST,

SCD,

Page 26: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

PROGRAM KESME İŞLEMİ

Kesme Servis Rutin Görevleri:

• İşlemci Saklayıcıları ve Bayrakların içeriklerini (CPU içeriği) sakla

• Bayrak değeri 1 olan kaynaktan gelen kesmeyi tanı

• Kesme gelen eleman için servis rutin programını yürüt

• İşlemci Saklayıcıları ve Bayrakların içeriklerini tekrar yükle.

• Kesme iznini açık tut.

• Ana Programa geri dön.

• Kesilen programın kesme öncesi bulunduğu adresi PC ye yükle.

Page 27: Duyuru_Bölüm-4-T.Bilg.Program_20110407_107

Kesme Servis Rutin Programı

-BUN SRVCLAIONLDA XADD YSTA Z STA SACCIRSTA SESKIBUN NXTINPOUTSTA PT1 IISZ PT1SKOBUN EXTLDA PT2 IOUTISZ PT2LDA SECILLDA SACIONBUN ZRO I----

/ Return address stored here/ Branch to service routine/ Portion of running program/ Turn on interrupt facility

/ Interrupt occurs here/ Program returns here after interrupt

/ Interrupt service routine/ Store content of AC/ Move E into AC(1)/ Store content of E/ Check input flag/ Flag is off, check next flag/ Flag is on, input character/ Print character/ Store it in input buffer/ Increment input pointer/ Check output flag/ Flag is off, exit/ Load character from output buffer/ Output character/ Increment output pointer/ Restore value of AC(1)/ Shift it to E/ Restore content of AC/ Turn interrupt on/ Return to running program/ AC is stored here/ E is stored here/ Pointer of input buffer/ Pointer of output buffer

ZRO,

SRV,

NXT,

EXT,

SAC,SE,PT1,PT2,

0 1100101102103104 200

Loc.