Porting: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan
Tag: Suntingan perangkat seluler Suntingan peramban seluler
Tag: Suntingan perangkat seluler Suntingan peramban seluler
Baris 21:
Dua aktivitas yang terkait dengan (tetapi berbeda dari) pemortaan adalah [[Emulator|emulasi]] dan [[Kompiler silang|kompilasi silang]].
 
== Kompilator pemortaanportaan ==
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'' 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>
 
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 penerjemah. Ini perlu dikodekan dalam [[Bahasa rakitan|kode rakitan]], menggunakan ''[[assembler]]'' yang sudah ada di sasaran.
# Sesuaikan sumber pembuat kode (''code generator'') ke mesin baru.
# Eksekusi sumber yang disadurkan menggunakan penerjemah dengan sumber pembuat kode sebagai masukan. Ini akan menghasilkan kode mesin untuk pembuat kode.