Porting: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Still need vertification
Baris 25:
== Kompiler porting ==
Alih-alih menerjemahkan langsung ke [[kode mesin]], [[kompiler]] modern menerjemahkan ke [[Bytecode|kode perantara]] mesin independen untuk meningkatkan portabilitas kompiler dan meminimalkan upaya desain. Bahasa perantara mendefinisikan ''[[mesin virtual]]'' yang dapat menjalankan semua program yang ditulis dalam [[Intermediate representation|bahasa perantara]] (sebuah mesin yang ditentukan oleh bahasanya dan sebaliknya).<ref name="Machinelanguage">{{harvnb|Tanenbaum|1984|p=3. §1.1 Languages,Levels, and Virtual Machines}} describes the terms and their relations.</ref> Instruksi kode perantara diterjemahkan ke dalam urutan kode mesin yang setara oleh sebuah ''generator'' ''kode'' untuk membuat [[Executable|kode yang dapat dieksekusi]]. Dimungkinkan juga untuk melewati pembuatan kode mesin dengan benar-benar menerapkan [[interpreter]] atau [[Just-in-time compilation|JIT]] untuk mesin virtual.<ref>{{harvnb|Tanenbaum|1984|p=2. Ch. 1 Introduction}} explains translation and interpretation.</ref>
 
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>
 
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>