Mengapa output dari kompiler disebut kode objek?


13

Dari esai Bahasa Pemrograman Dijelaskan oleh Paul Graham, diterbitkan dalam Hackers & Painters :

Bahasa tingkat tinggi yang Anda makan kompiler juga dikenal sebagai kode sumber , dan terjemahan bahasa mesin yang dihasilkannya disebut kode objek .

Dari artikel Wikipedia tentang kode objek :

Kode objek, atau terkadang modul objek, adalah apa yang dihasilkan oleh kompiler komputer.

Dari definisi 'kompiler' :

Secara tradisional, output dari kompilasi telah disebut kode objek atau kadang-kadang modul objek. (Perhatikan bahwa istilah "objek" di sini tidak terkait dengan pemrograman berorientasi objek.)

Jadi apa adalah objek istilah yang terkait dengan?


2
Perhatikan bahwa kompiler tidak harus membuat kode mesin. Biasanya memiliki tingkat abstraksi yang lebih rendah, atau biasanya disebut penerjemah.

2
Dua orang pertama yang harus berkomunikasi satu sama lain tentang kode objek tidak tahu harus menyebutnya apa sehingga mereka mengadopsi istilah yang sangat umum.
semaj

Orang-orang baik di RetroComputing.SE mungkin memiliki wawasan yang lebih baik tentang ini.
Roger

Jawaban:


10

Obyek kode kadang-kadang juga disebut sasaran kode, karena itu adalah hasil target proses penerjemahan dilakukan oleh compiler. Jadi "kode objek" digunakan sebagai kebalikan dari "kode sumber".

Ada nama-nama aneh lainnya di dunia kompiler: misalnya, segmen file dengan kode biner dari program Anda sering disebut "segmen teks".


1
Adakah yang tahu mengapa ini disebut "teks"? Seperti dalam asal mula sejarahnya?
nielsbot

@nielsbot: Saya pikir ini sangat kontras dengan "segmen data" tempat variabel disimpan, "segmen teks" berisi apa yang awalnya (sebelum kompilasi) teks, yaitu kode program.
Michael Borgwardt

8

Itu adalah objek seperti dalam "objektif". Bukan objek sebagai "benda".

Mirip dengan jawaban dasblinkenlight tentang dipanggil "kode target". Ini adalah target atau tujuan dari kompiler.


1
Tidak yakin saya setuju dengan itu.
Martin York

1
Kedengarannya benar bagi saya. Itu selalu disebut dalam konteks tujuan dari kompiler.
Lord Tydus

Ya, ini jawaban yang tepat. Ini mencerminkan cara kerjanya dalam kalimat, di mana kata kerjanya mewakili kompiler ( pelaku ), subjek adalah kode sumber, dan objek adalah target atau hasil dari tindakan itu (kompilasi). Karenanya "kode subjek" adalah sumber (yang mengalami kompilasi, sebagai "subjek"), sedangkan "kode objek" adalah target ("tujuan" dari kompilasi).
BarbaraKwarc

1

Kode objek dihasilkan ketika Anda mengkompilasi kode sumber. Kode objek ini belum dapat dieksekusi karena tidak memiliki perpustakaan yang diperlukan untuk dijalankan. Jadi Anda menautkan beberapa kode objek dan pustaka dan itu menjadi executable.

Dalam pemahaman saya " objek " berhubungan dengan "hal" yang Anda kembangkan dengan menulis kode sumber itu. Itu bisa berupa modul, kelas, fungsi atau apa pun.


-1

Kode Objek milik File Objek .

Istilah Obyek dalam Ilmu Komputer awal tidak merujuk pada "tujuan" (alias "target"), tetapi menekankan properti objek yang mudah dikenali, berbeda satu sama lain. Objek biasa mudah untuk didefinisikan dan dibicarakan, karena mereka memiliki batas. Tidak seperti ...

Objek virtual adalah wadah data.

Bukan karena Anda duduk dan menulis beberapa kode dan entah bagaimana Kode Obyek . Tidak, Anda duduk membaca persyaratan ELF, COFF, XCOFF (format File Objek umum) dan jika kode Anda sesuai dengan persyaratan ini menjadi Kode Obyek seperti yang Anda katakan.


-3

Biasanya siswa memahami bahasa tingkat rendah atau program yang ditulis dalam bahasa tingkat rendah disebut "kode objek". Ada masalah untuk memahami mengapa output dari kompiler disebut kode objek. Keluaran secara umum disebut target yang dikompilasi oleh kompiler. Ini adalah tujuan dari kode sumber. Tidak ada arti bahwa kode objek adalah program bahasa tingkat rendah. Hanya itu menghasilkan target sehingga target terkait dengan objektif dan objektif dari kode sumber yang dikompilasi oleh kompiler dan itulah sebabnya output dari kompiler biasanya disebut "kode objek". Karena bahasa rendah tidak dikompilasi oleh kompiler. Bahasa tingkat rendah ada di sana pada penerjemah seperti "Assembler" atau "interpreter".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.