Bagian dari executable yang berisi kode kadang-kadang disebut .text
bagian. Dalam arsitektur memori tersegmentasi, segmen yang dipetakan sebagai kode kadang-kadang disebut segmen teks. Pesan kesalahan unix "file teks sibuk" ( ETXTBSY
) berarti "file ini adalah program yang sedang dieksekusi".
Bagaimana teks bisa berarti kode yang dapat dieksekusi (mesin) ?
Jawaban yang ideal akan: menjelaskan hubungan antara kata dan artinya; memberikan kutipan untuk asal atau setidaknya sejarah istilah; berikan beberapa gagasan tentang komunitas mana yang menggunakannya.
terminology
history
file-structure
linking
Gilles 'SANGAT berhenti menjadi jahat'
sumber
sumber
.text
adalah arahan majelis. Majelis adalah teks.Jawaban:
Istilah ini berasal dari bahasa assembly. Saya tidak dapat memverifikasi etimologinya, tetapi dugaan saya adalah bahwa namanya berasal dari penggunaan bagian lain. Sedangkan
.data
bagian menunjukkan variabel yang dapat berubah selama eksekusi,.text
bagian tersebut berisi data yang tidak berubah selama eksekusi, yang memungkinkannya untuk dimasukkan ke dalam ROM jika diperlukan. Itu membuatnya berguna untuk kode, ya, tetapi juga membuatnya berguna untuk string teks yang tidak berubah. Mungkin dari situlah istilah itu berasal.Untuk menanggapi komentar Griffin tentang fungsi-fungsi kelas satu, pertimbangkan kode python 3 berikut:
Kode yang benar-benar Anda jalankan untuk
increment
akhirnya tampak seperti:Kode yang dapat dieksekusi itu dapat dimasukkan ke dalam ROM. Tidak pernah berubah sepanjang pelaksanaan program, tidak peduli berapa kali Anda menelepon
counter()
. Apa yang dilakukannya perubahan adalahself
pointer dan variabel anggotanya. Itu harus dimasukkan.data
. Saat Andareturn increment
, Anda sebenarnya mengembalikan instance baru dari objek fungsi kenaikan. Anda tidak secara dinamis membuat kode yang dapat dieksekusi baru setiap saat. Kode itu sendiri tidak dapat diubah meskipun penunjuknya tidak.Satu-satunya kode yang harus disimpan di
.data
bagian ini adalah yang dihasilkan oleheval()
, karena tidak diketahui oleh kompiler atau kompiler JIT pada awal program. Namun, bahkan kode itu tidak dapat diubah. Jika Anda mengubah string dan meneleponeval()
lagi, Anda tidak mengubah kode dari waktu sebelumnya Anda meneleponeval()
, Anda membuat set kode yang sama sekali baru.Meskipun model pemrograman mungkin membuatnya terasa seperti kode bisa berubah, kode modifikasi diri yang sebenarnya pada tingkat instruksi prosesor berbahaya dan jarang ditemukan di luar topik OS voodoo seperti proses konteks switching.
sumber