Anda di halaman 1dari 13

SOAL LATIHAN CODE GENERATOR

 
1.              Input dan Output pada tahap Code Generator  kecuali:
A.        Target Code
B.        Syntax Tree
C.        Three Address Code
D.        Postfix Notation
 
2.              Persyaratan yang harus dimiliki oleh Code Generator  adalah:
 
I.            Output code harus benar dan berkualitas tinggi, yaitu harus menggunakan
resources dari target machine secara efektif.
II.          Harus efisien.
III.        Secara matematis, masalah untuk membangkitkan code yang optimal
adalah decidable.
IV.       Secara praktek, kita akan menggunakan teknik heuristik yang baik, tapi tidak
selalu berarti optimal code
 
A.        I, II, III, dan IV
B.        I, II, dan III
C.        I, II, dan IV
D.        I, dan II
 
3.              Walaupun sangat tergantung kepada target machine dan operating system,
masalah-masalah yang penting dalam code generation adalah :
 
I.         Input untuk code generator
II.       Target program
III.     Memory Management
IV.    Instruction Selection
V.      Register Allocation
VI.    Pemilihan Urutan Evaluation
VII.   Pendekatan Code Generator
 
A.        I, II, dan III
B.        I, IV, V, dan VII
C.        I, II, IV, VII
D.        I, II, III, IV, V, VI, VII
 
4.              Output dari code generator adalah target program, yang bisa mengambil
bentuk :
 
I.         Absolute Machine Language
II.       Relocatable Machine Language
III.     Assembly Language
 
A.        I, dan III
B.        I, dan II
C.        II, dan III
D.        I, II, dan III
 
5.              Penggunaan register dibagi ke dalam 2 sub-masalah, yaitu:
 
I.         Selama register allocation, dipilih variable-variable yang akan menetap di dalam
register pada suatu titik dalam program.
II.       Selama register allocation, dipilih variable-variable yang akan dead di dalam
register pada suatu titik dalam program.
III.     Selama register assignment, diambil register khusus dimana variabel akan menetap.
IV.    Selama register assignment, diambil register khusus dimana variabel akan dead.
 
A.        I, dan III
B.        II, dan IV
C.        I, dan IV
D.        II, dan III
 
6.              Pernyataan yang benar berikut ini terkait dengan pemilihan urutan evalusi
pada tahap Code Generator adalah:
I.           Urutan dilakukannya komputasi dapat mempengaruhi efisiensi dari target code.
II.         Beberapa urutan komputasi memerlukan register yang lebih sedikit untuk
menampung intermediate result daripada yang lainnya.
III.       Mengambil urutan terbaik adalah NP-Complete Problem.
 
A.        I, dan III
B.        I, II, dan III
C.        II, dan III
D.        I, dan II
 
7.              Salah satu tujuan perancangan yang penting dari Code Generator adalah:
 
I.            mudah diimplementasikan
II.          mudah ditest
III.        mudah dipelihara
 
A.        I, II, dan III
B.        I, dan III
C.        II, dan III
D.        I, dan II
 
8.              MOV y, R0
A.        load y ke register R0
B.        load R0 ke register y
C.        push y ke register R0
D.        pop y ke register R0
 
9.              ADD z, R0
A.        add z ke R0
B.        out z ke R0
C.        in z ke R0
D.        sub z ke R0
 
10.          MOV R0, x
A.        store R0 ke dalam x
B.        store x ke dalam R0
C.        out x ke R0
D.        out R0 ke x
 
SOAL LATIHAN SEMANTIC ANALYSIS
 
1.              Semantic Checking, dapat dilakukan secara:
I.            Dinamic
II.          Static
III.        Stochastic
 
A.      I dan/atau II
B.      I saja
C.      II saja
D.      I dan/atau III
 
2.              Static Checking dilakukan pada saat:
A.        Compile
B.        Run Time
C.        Execution Time
D.        Kapan Saja.
 
3.              Dinamic Checking dilakukan pada saat:
A.        Compile
B.        Run Time
C.        Execution Time
D.        Kapan Saja.
 
4.              Type expression  dalam sebuah  Language, dapat berupa
 
I.            A basic type
II.          A type name
III.        A type constructor applies to other type expressions.
 
A.           I
B.           II
C.           III
D.           I, dan/atau II, dan/atau III
 
5.              Perhatikan deklarasi berikut:
int x[100];
… 
x[i]; 
 
Checking x[i], dilakukan dengan cara:
A.        Static
B.        Dinamic
C.                  Static   dan Dinamic
D.        Stochastic
 
6.              Perhatikan deklarasi  berikut ini:
type p =  node;
        q =  node;
var x : p;
      y : q;
 
A.        x dan y adalah structurally equivalent, tetapi tidak name equivalent.
B.        x dan y adalah structurally equivalent, juga name equivalent.
C.                  x dan y adalah structurally equivalent
D.        x dan y adalah name equivalent.
 
7.              Jika T adalah sebuah type expression maka array(T)
A.        Belum tentu type expression
B.        Adalah Basic Type
C.        Juga type expreesion
D.        Adalah Type Name
 
8.              Notasi yang digunakan dalam Semantic Rules:
 
I.      Syntax-Directed Definitions
II.    Translation Schemes
 
A.        I saja
B.        II saja
C.        I atau II
D.        Bukan I dan Bukan II
 
9.              Sebuah  parse tree  yang memperlihatkan nilai dari attributes  untuk setiap
Simbol Grammar  pada nodenya dinamakan:
A.        Semantic Tree
B.        Syntax Tree
C.        Lexical Tree
D.        Annotated parse tree
 
10.          Sebuah   translation scheme  dalam   context-free grammar, dimana:
 
I.      Attributes   dikaitkan dengan grammar symbols
II.    Semantic actions  yang berada dalam kurung kurawal ({ }) disisipkan pada bagian
kanan dari   productions.
 
A.        I dan II
B.        I saja
C.        II saja
D.        Bukan I dan II
 
SOAL LATIHAN INTERMEDIATE CODE
 
1.              Input tahap Intermediate Code Generator adalah:
A.        Syntax Tree
B.        Syntax Tree  yang sudah melalui Type Checking
C.        Three Address Code
D.        Quadruples
 
2.              Intermediate codes adalah:
A.        Machine Independent Codes
B.        Machine Dependent Codes
C.        Machine Codes
D.        Assembly Codes
 
3.              Intermediate language dapat berupa:
 
I.            Syntax Trees
II.          Postfix   Notation
III.        Three-address Code (Quadraples)
 
A.        I
B.        II
C.        III
D.        I, II, III
 
4.              Sebuah quadraple
x := y op z
Dapat ditulis dalam bentuk:
A.        op  y, z, x
B.        op  z, y, x
C.        op  x, z, y
D.        op  y, x, z
 
5.              Penggunakan terminology  “three-address code” , karena
setiap statement berisi three addresses,
A.        Dua untuk operand, satu untuk operator
B.        Dua untuk operand, satu untuk result
C.        Satu untuk operand, dua untuk operator
D.        Tiga untuk operand
 
6.              Three-address code untuk a := b + c   adalah:
A.        add  b, c, a
B.        add  c, b, a
C.        add  a, b, c
D.        sum b, c, a
17.          Three-address code  untuk if x > y goto L1
A.        jmpgt   x, y, L
B.        jmpgt   x, y, L1
C.        jmplt    x, y, L1
D.        jmplt    x, y, L
 
18.         Three-address code   untuk f(x+1, y) adalah:
 
01.         add   x, 1, t1
02.         ……….
03.         ……….
04.         ……….
          Code  untuk 02 adalah:
 
A.      param x
B.       param f
C.       param t1
D.      param 2
 
19.         Three-address code   untuk f(x+1, y) adalah:
 
01.         add   x, 1, t1
02.         ……….
03.         param y
04.         ……….
 
          Code  untuk 04 adalah:
 
A.      param x
B.       param f
C.       param t1
D.      call f, 2
 
20.         Three-address code   untuk f(x+1, y) adalah:
 
01.         add   x, 1, t1
02.         ……….
03.         ……….
04.         ……….
 
          Code  untuk 03 adalah:
 
A.      param x
B.       param f
C.       param y
D.      call f, 2
 
LATIHAN CODE OPTIMIZER
 
1.              Hal-hal berikut ini harus diperhatikan dalam melakukan Code Optimization
 
I.             Makna harus dipertahankan
II.            Kecepatan harus dalam kategori rata-rata
III.          Effort yang dibutuhkan dalam kategori wajar
 
A.        I, II, dan III
B.        I, dan II
C.        I, dan III
D.        II, dan III
 
2.              Peluang untuk melakukan Code Optimization bisa dilakukan oleh/pada saat:
 
I.            Programmer (algorithm, directives)
II.          Intermediate code
III.        Target code
 
A.        I, II, dan III
B.        I, dan III
C.        I, dan II
D.        II, dan III
 
3.              Berikut ini merupakan karakteristik dari  peephole optimization
 
I.            Redundant instruction elimination
II.          Flow of control information
III.        Algebraic Simplification
IV.       Use of machine Idioms
 
A.        I, II, IV
B.        I, III. IV
C.        II, III, IV
D.        I, II, III, IV
 
4.              Perhatikan statement berikut:
 
x := 32                                   
x := x + 32 
 
Optimasi yang diperoleh dengan menerapkan contant folding:
A.        x := 32 * 2
B.        x := 64
C.        x := 32 + 32
D.        x := 2 * 32
 
5.              Diketahui statement berikut:
 
goto L2     
x := x + 1     
 
Jika diterapkan optimasi unreachable code, maka akan menjadi:
A.        goto L2
B.        x := x+1
C.        goto L1
D.        Tidak dapat dioptimasi lagi
 
6.              Diketahui statement berikut:
 
  goto L1                                       
 …
  L1:     goto L2   
Catatan: Tidak ada percabangan lain dari L1
Penerapan optimasi flow of control optimatizations    akan menjadi:
 
A.      Tidak dapat dioptimasi lagi
B.      Tidak perlu dioptimasi
C.      goto L1
D.      goto L2
 
7.              Dengan menerapkan optimasi Algebraic Simplification pada ekspresi  x := x +
0   akan manjadi
a.       x := x
b.       Tidak diperlukan
c.       x := 0
d.       x := x + 0
 
8.              Penerapan optimasi Dead code untuk statement berikut ini, akan menjadi:
 
x := 32  ß   dimana x tidak digunakan setelah statement ini.    
y := x + y                
 
A.        y := y + 32
B.        y := y + 32
C.        Tidak berubah
D.        Tidak dapat dioptimasi lagi
 
9.              Penerapan optimasi Reduction in strength untuk statement berikut ini, akan
menjadi:
 
  x := x * 2                             
 
I.         x := x + x
II.       x := x << 2
 
A.        I, dan II
B.        I
C.        II
D.        I, atau II
 
10.          Optimasi pada level Basic Block, dapat berupa:
 
I.           Common Sub expression elimination
II.         Constant Propagation
III.       Copy Propagation
IV.       Dead code elimination
 
A.        I, dan II
B.        I, II, dan III
C.        I, II, III, dan IV
D.        II, dan IV
 
 

Anda mungkin juga menyukai