Professional Documents
Culture Documents
CODE GENERATION
Merupakan tahap terakhir dari kompiler.
Input code generator adalah represen-
tasi intermediate dari source program,
sedangkan outputnya adalah target
program yang ekivalen.
osisi code generator dalam kompiler
adalah se!agai !erikut "
ersyaratan code generator "
output code harus !enar dan !er-
kualitas tinggi yaitu harus mengguna-
kan resources dari target machine
secara e#ekti#
harus e#isien.
$ahan %&ar Matakuliah oleh SINAR SINURAT
'ode
generator
(ym!ol
ta!le
'ode
optimi)er
Source
program
Intermediate
code
Intermediate
code
Target
program *ront end
Teknik Kompilasi 14 / + - 10
ISU DISAIN CODE GENERATOR
,alaupun sangat tergantung kepada
target machine dan operating system,
masalah-masalah penting dalam code
generation adalah "
Input untuk code generator
Target program
Memory Management
Instruction (election
-egister %llocation
emilihan .rutan /valuation
endekatan 'ode 0enerator
I1.T '23/ 0/1/-%T2-
Input terdiri dari representasi inter-
mediate pada source program yang
dihasilkan oleh front-end, !ersama
in#ormasi dalam sym!ol ta!le yang
digunakan untuk menentukan alamat
$ahan %&ar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 14 / 4 - 10
run time data o!&ect dalam representasi
intermediate.
3iasumsikan !ah5a se!elum code
generation, #ront-end telah melakukan
scan, parse, 6 mener&emahkan source
program ke dalam detail representasi
intermediate detail.
(elain itu, asumsi di atas &uga dilakukan
type checking, sehingga type-con-
version operator dapat disisip dimana
perlu serta semantic error yang telah
terdeteksi.
T%-0/T -20-%M
Target program oleh code generator
yang memenuhi, !entuknya adalah "
%!solute Machine 7anguage
-elocata!le Machine 7anguage
%ssem!ly 7anguage
$ahan %&ar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 14 / 4 - 10
%!solute machine language " mem-
punyai keuntungan dapat ditempat-
kan dalam lokasi tetap di memory
dan dapat dieksekusi langsung.
'ontoh "
se¨ah 8student-&o!9 compiler,
seperti ,%T*I: dan 7/'
-elocata!le Machine 7anguage ;2!&ect
Module< " mengi&inkan su!program
dikompile secara terpisah ;#le=i!ility<.
(atu set o!&ect module dapat link /
load !ersama-sama pada eksekusi
linking-loader ;perlu usaha ekstra<
%ssem!ly 7anguage " keuntungannya
adalah adanya kemudahan proses
code generation untuk mengenerate
sym!olic instruction dan mengguna-
kan #asilitas makro dari assem!ler
untuk mengenerate code.
$ahan %&ar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 14 / > - 10
M/M2-? M%1%0/M/1T
Memetakan nama pada alamat data
o!&ect dalam run-time memory yang
!erlangsung !ersama-sama front-end
dan code generator.
3iasumsikan !ah5a three-address sta-
tement mere#er nama kedalam sym!ol-
ta!le entry.
Tipe dalam deklarasi menentukan le!ar
;¨ah storage< yang diperlukan untuk
nama yang dideklarasikan.
I1(T-.'TI21 (/7/'TI21
.ni#ormity dan completeness merupa-
kan #aktor yang penting, &uga instruction
speed dan machine idiom.
$ahan %&ar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 14 / @ - 10
'ontoh "
Three-address statement, !entuk "
= "A y B )
dimana " =, y, ) dialokasikan secara
static dapat diter&emahkan ke dalam
sekuens code !erikut "
M2: y, -0 /C load y ke register -0 C/
%33 ), -0 /C add ) ke -0 C/
M2: -0, = /C store -0 ke dalam = C/
1amum statement-!y-statement sering
menghasilkan code yang !uruk. 'ontoh
sekuens dari statement
a "A ! B c
d "A a B e
dapat diter&emahkan men&adi "
M2: !, -0
%33 c, -0
M2: -0, a
M2: a, -0
%33 e, -0
M2: -0, d
$ahan %&ar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 14 / D - 10
3isini statement ketiga dan keempat
akan redundant, &uga statement ketiga
&ika a tidak digunakan secara !erurutan.
-/0I(T/- %772'%TI21
Instruksi yang meli!atkan register
operand !iasanya le!ih pendek dan
le!ih cepat daripada yang meli!atkan
operand dalam memory.
Karena itu, penggunaan register yang
e#isien sangat penting untuk mem-
!angkitkan code yang !aik.
enggunaan register di!agi dalam +
su!-masalah "
1. (elama register allocation, dipilih
varia!le-varia!le yang akan mene-
tap dalam register pada suatu titik
dalam program
$ahan %&ar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 14 / E - 10
+. (elama register assignment, diam-
!il register khusus dimana varia!el
akan menetap.
Menemukan optimal assignment dari
register untuk varia!el sulit, 5alaupun
dengan single register.
(ecara matematis, pro!lem ini adalah
1-'omplete.
/MI7IF%1 .-.T%1 /:%7.%(I
.rutan komputasi dapat mempengaruhi
e#isiensi pada target code. $e!erapa
urutan komputasi memerlukan register
yang le!ih sedikit untuk menampung
intermediate result daripada yang
lainnya. Mengam!il urutan ter!aik
adalah 1-'omplete ro!lem.
$ahan %&ar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi 14 / G - 10
/13/K%T%1 '23/ 0/1/-%T2-
Kriteria terpenting adalah menghasilkan
code yang !aik.
Tu&uan perancangan adalah "
mudah diimplementasikan
mudah ditest
mudah di-maintain
REVIEW
$ahan %&ar Matakuliah oleh SINAR SINURAT