Pemortaan: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan Tag: VisualEditor Suntingan perangkat seluler Suntingan peramban seluler |
Tag: Suntingan perangkat seluler Suntingan peramban seluler |
||
Baris 22:
== Kompilator portaan ==
Alih-alih menerjemahkan langsung ke [[kode mesin]], [[kompiler|kompilator]] modern menerjemahkan ke [[Bytecode|kode perantara]] mesin independen untuk meningkatkan portabilitas kompilator 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 ''code generator'' (penghasil 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>
Menulis sumber kompilator seluruhnya dalam bahasa pemrograman yang seharusnya diterjemahkan oleh kompilator, membuat pendekatan berikut, lebih dikenal sebagai ''[[Bootstrapping (kompiler)|compiler bootstrapping]]'', layak di mesin sasaran:
# Pemortaan
# Sesuaikan sumber
# Eksekusi sumber yang disadurkan menggunakan penerjemah dengan sumber
Bagian yang sulit dari pengkodean rutinitas pengoptimalan dilakukan dengan menggunakan [[bahasa pemrograman tingkat tinggi|bahasa tingkat tinggi]] alih-alih bahasa rakitan sasaran.
Menurut para perancang bahasa [[BCPL]], kode yang ditafsirkan (dalam kasus BCPL) lebih ringkas daripada kode mesin; biasanya dengan faktor dua banding satu. Namun kode yang ditafsirkan 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>
|