t01740020120154049code generator update
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 :