Pemortaan: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
still need vertification |
|||
Baris 27:
Penerjemah tidak terlalu rumit dan oleh karena itu lebih mudah untuk di-port daripada generator kode, karena tidak dapat melakukan pengoptimalan kode karena tampilan kode programnya terbatas (itu hanya melihat satu instruksi pada satu waktu, dan Anda memerlukan urutan untuk melakukan optimasi). Beberapa interpreter sangat mudah untuk di-port, karena mereka hanya membuat asumsi minimal tentang set instruksi dari perangkat keras yang mendasarinya. Hasilnya, mesin virtual bahkan lebih sederhana daripada CPU target.<ref>{{harvnb|Richards|Whitby-Strevens|1984|p=133. §7.4 The bootstrapping process and INTCODE}} explains the role of the INTCODE interpreter.</ref>
Menulis sumber kompiler seluruhnya dalam bahasa pemrograman yang seharusnya diterjemahkan oleh kompiler, membuat pendekatan berikut, lebih dikenal sebagai''[[Bootstrapping (kompiler)|compiler bootstrapping]]'', layak di mesin target:
# Port penerjemah. Ini perlu dikodekan dalam [[Bahasa rakitan|kode rakitan]], menggunakan [[assembler]] yang sudah ada di target.
# Sesuaikan sumber generator kode ke mesin baru.
# Eksekusi sumber yang diadaptasi menggunakan penerjemah dengan sumber pembuat kode sebagai input. Ini akan menghasilkan kode mesin untuk generator kode.
Bagian yang sulit dari pengkodean rutinitas pengoptimalan dilakukan dengan menggunakan bahasa tingkat tinggi alih-alih bahasa rakitan target.
Menurut para desainer bahasa [[BCPL]], kode yang diinterpretasikan (dalam kasus BCPL) lebih ringkas daripada kode mesin; biasanya dengan faktor dua banding satu. Namun kode yang diinterpretasikan berjalan sekitar sepuluh kali lebih lambat daripada kode yang dikompilasi pada mesin yang sama.<ref>{{harvnb|Richards|Whitby-Strevens|1984|p=136. §7.4.3 Example}} gives an example translation of a BCPL program into INTCODE for the interpreter.</ref>
|