t01740020120154049code generator update

Upload: anonymous-evhjsxn

Post on 22-Feb-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 T01740020120154049code Generator Update

    1/16

    1

    Pertemuan 25 & 26

    Code Generation

    Matakuliah : T0174 / Teknik Kompilasi

    Tahun : 2005

    Versi : 1/6

  • 7/24/2019 T01740020120154049code Generator Update

    2/16

    2

    Learning Outcomes

    Pada akhir pertemuan ini, diharapkan mahasisaakan mampu :

    ! Mahasisa dapat menun"ukkan hasil #ode

    $enarator dari suatu kasus kompilasi pro$ram

    %&'(

    ! Mahasisa dapat mem)uat dia$ram / skema

    peran#an$an #ompiler *an$ palin$ optimal %&4(

  • 7/24/2019 T01740020120154049code Generator Update

    3/16

    '

    Outline Materi

    ! +ssues dalam disain #ode $enerator

    ! The tar$et ma#hine

    ! asi# )lo#k dan -lo $raph

    !.epresentasi dari )asi# )lo#k

    ! .e$ister allo#ation and assi$nment

  • 7/24/2019 T01740020120154049code Generator Update

    4/16

    4

    Posisi Code Generation

    ! Tahap terakhir dari kompiler adalah #ode $enerator

    +nput #ode $enerator adalah intermediate representationdari sour#e pro$ram, sedan$kan outputn*a adalah tar$et

    pro$ram *an$ eki3alen

    ! Posisi #ode $enerator dalam kompiler adalah se)a$ai

    )erikut :intermediate

    code

    front

    end

    code

    optimizer

    code

    generator

    symbol

    table

    source

    pro$ram

    intermediate

    code

    target

    program

  • 7/24/2019 T01740020120154049code Generator Update

    5/16

    5

    Persyaratan code generator :

    ! output #ode harus )enar dan )erkualitas tin$$i,

    *aitu harus men$$unakan resour#es dari tar$etma#hine se#ara e-ekti-

    ! harus e-isien

    ! e#ara matematis, masalah untukmem)an$kitkan #ode *an$ optimal adalah

    unde#ida)le

    ! e#ara praktek, kita akan men$$unakan teknik

    heuristik *an$ )a$us, tapi tidak selalu )erartioptimal #ode

  • 7/24/2019 T01740020120154049code Generator Update

    6/16

    6

    Issue-issue dalam Code

    Generator Design

    ! alaupun san$at ter$antun$ kepada tar$et

    ma#hine dan operatin$ s*stem, masalah

    masalah *an$ pentin$ dalam #ode $eneration

    adalah :

    +nput untuk #ode $enerator Tar$et pro$ram

    Memor* Mana$ement

    +nstru#tion ele#tion

    .e$ister llo#ation

    Pemilihan 8rutan 93aluation

    Pendekatan &ode enerator

  • 7/24/2019 T01740020120154049code Generator Update

    7/16

    7

    Input ntu! Code Generator

    ! +nput untuk #ode $enerator terdiri dari intermediate

    representation dari sour#e pro$ram *an$ dihasilkan olehfront-end, )ersama den$an in-ormasi di dalam s*m)ol

    ta)le *an$ di$unakan untuk menentukan run time

    address dari data o)"e#t *an$ ditun"ukkan oleh nama

    nama dalam intermediate representation

    ! iasumsikan )aha se)elum #ode $eneration, -rontend

    telah mens#an, menparse, mener"emahkan sour#e

    pro$ram ke dalam intermediate representation detail

    ! elain itu, diasumsikan telah dilakukan t*pe #he#kin$,

    sehin$$a t*pe#on3ersion operator telah diinsert

    dimana perlu semanti# error telah dideteksi

  • 7/24/2019 T01740020120154049code Generator Update

    8/16

    ;

    "arget Program

    ! ed di dalam memor* lan$sun$ dapat dieksekusi

    Pro$ram *an$ ke#il dapat dikompile dan dieksekusi den$an #epat

    ! &ontoh : se"umlah ?student"o)@ #ompiler, seperti TA+V dan P=/&

    ! Keuntun$an tar$et pro$ram dalam )entuk .elo#ata)le Ma#hine =an$ua$e Pro$ram%

  • 7/24/2019 T01740020120154049code Generator Update

    9/16

    B

    Memory Management

    ! Memetakan nama di dalam sour#e pro$ram ke address dari datao)"e#t dalam runtime memor* diker"akan )ersamasama oleh front-

    end dan #ode $enerator! iasumsikan )aha nama dalam threeaddress statement mere-er

    kepada s*m)olta)le entr* untuk nama terse)ut

    ! Tipe dalam deklarasi menentukan le)ar %"umlah stora$e( *an$diperlukan untuk nama *an$ dideklarasikan

    .e$ister .0, .1, , .n1

    op sour#e, destination

    M

  • 7/24/2019 T01740020120154049code Generator Update

    10/16

    10

    Instruction #election! 8ni-ormit* dan #ompleteness dari instru#tion set adalah -aktor *an$ pentin$

    ! elain itu, -aktor *an$ pentin$ lainn*a adalah instru#tion speed dan ma#hine idiom

    ! &ontoh : etiap threeaddress statement dalam )entuk : > :C * D E

    dimana >, *, dan E dialokasikan se#ara stati#, dapat diter"emahkan ke dalam sekuens #ode :

    M F/

    ! Gamun statement)*statement #ode $eneration ini serin$ men$hasilkan #ode *an$ )uruk&ontoh : ekuens dari statement

    a :C ) D #

    d :C a D e

    dapat diter"emahkan ke dalam :

    M

  • 7/24/2019 T01740020120154049code Generator Update

    11/16

    11

    $egister %llocation

    ! +nstruksi *an$ meli)atkan re$ister operand )iasan*a le)ihpendek dan le)ih #epat daripada *an$ meli)atkan operand

    di dalam memor*! Karena itu, pen$$unaan re$ister *an$ e-isien san$at pentin$

    untuk mem)an$kitkan #ode *an$ )aik

    ! Pen$$unaan re$ister di)a$i ke dalam 2 su)masalah :

    elama register allocation, dipilih 3aria)le3aria)le *an$akan menetap di dalam re$ister pada suatu titik dalampro$ram

    elama register assignment, diam)il re$ister khususdimana 3aria)el akan menetap

    ! Menemukan optimal assi$nment dari re$ister untuk 3aria)elsulit, alaupun den$an sin$le re$ister

    ! e#ara matematis, pro)lem ini adalah GP&omplete

  • 7/24/2019 T01740020120154049code Generator Update

    12/16

    12

    Pemilian rutan '(aluasi

    ! 8rutan dilakukann*a komputasi dapat

    mempen$aruhi e-isiensi dari tar$et #odee)erapa urutan komputasi memerlukan

    re$ister *an$ le)ih sedikit untuk

    menampun$ intermediate result daripada*an$ lainn*a Men$am)il urutan ter)aik

    adalah GP&omplete Pro)lem

  • 7/24/2019 T01740020120154049code Generator Update

    13/16

    1'

    Pende!atan Code Generator

    ! Kriteria terpentin$ untuk #ode $enerator

    adalah men$hasilkan #ode *an$ )aik! alah satu tu"uan peran#an$an *an$

    pentin$ dari &ode enerator adalah :

    mudah diimplementasikan mudah ditest

    mudah dimaintain

  • 7/24/2019 T01740020120154049code Generator Update

    14/16

    14

    $un-"ime #torage

    ! trate$i alokasi : tati# dan ta#k

    ! tati# allo#ation Pada stati# allo#ation statement #all diter"emahkan

    men"adi :

    Mo3e Hhere D 20, #alleestati#Iarea

  • 7/24/2019 T01740020120154049code Generator Update

    15/16

    15

    "a)el Code Generator

    ! .e$ister deskripsimenun"ukkan apa *an$ tersimpan didlam setiap

    re$ister *$ di$unakan untuk mem)uat tar$et #ode

    ! ddress des#riptormenun"ukkan lokasi dimana har$a dari suatu

    3aria)el disimpan

    ! &ontoh : dC%a)(D%a#(D%a#(

    ! Ta)el &ode $enerator s)) :

  • 7/24/2019 T01740020120154049code Generator Update

    16/16

    16

    *ui+ optimasi & Code Generator

    2 i)erikan statement

    a :C %a )( D %# D )(F%' D # a( 4F), )uatlah :

    uat ta)el #ode $enerator

    1 uatlah -lo $raph dan )asi# )lok serta lakukan optimasi pada poton$an pro$ram

    erikut :