Adakah yang bisa menjelaskan apa itu tabel simbol dalam konteks C dan C ++?
sumber
Adakah yang bisa menjelaskan apa itu tabel simbol dalam konteks C dan C ++?
Ada dua arti umum dan terkait dari tabel simbol di sini.
Pertama, ada tabel simbol di file objek Anda. Biasanya, compiler C atau C ++ mengompilasi satu file sumber menjadi file objek dengan ekstensi .obj atau .o. Ini berisi kumpulan kode dan data yang dapat dieksekusi yang dapat diproses linker menjadi aplikasi yang berfungsi atau pustaka bersama. File objek memiliki struktur data yang disebut tabel simbol di dalamnya yang memetakan item berbeda dalam file objek ke nama yang dapat dipahami oleh linker. Jika Anda memanggil fungsi dari kode Anda, kompilator tidak meletakkan alamat akhir rutinitas tersebut di file objek. Sebaliknya, ini menempatkan nilai placeholder ke dalam kode dan menambahkan catatan yang memberi tahu linker untuk mencari referensi di berbagai tabel simbol dari semua file objek yang diprosesnya dan menempelkan lokasi terakhir di sana.
Kedua, ada juga tabel simbol di pustaka bersama atau DLL. Ini dihasilkan oleh linker dan berfungsi untuk memberi nama semua fungsi dan item data yang dapat dilihat oleh pengguna perpustakaan. Hal ini memungkinkan sistem untuk melakukan penautan waktu proses, menyelesaikan referensi terbuka ke nama-nama tersebut ke lokasi tempat pustaka dimuat dalam memori.
Jika Anda ingin mempelajari lebih lanjut, saya sarankan buku John Levine yang sangat bagus "Linkers and Loaders". teks tautan
Singkatnya, ini adalah pemetaan nama yang Anda tetapkan variabel ke alamatnya di memori, termasuk metadata seperti jenis, cakupan, dan ukuran. Ini digunakan oleh kompiler.
Itu secara umum, bukan hanya C [++] *. Secara teknis, itu tidak selalu menyertakan alamat memori langsung. Itu tergantung pada bahasa apa, platform, dll. Yang ditargetkan kompilator.
sumber
Di Linux, Anda dapat menggunakan perintah:
untuk membuat daftar tabel simbol dari file objek itu. Dari hasil cetak ini, Anda kemudian dapat menguraikan simbol linker yang sedang digunakan dari namanya yang rusak .
sumber
Tabel simbol adalah daftar "simbol" dalam program / unit. Simbol paling sering merupakan nama variabel atau fungsi. Tabel simbol dapat digunakan untuk menentukan di mana letak variabel atau fungsi memori.
sumber
Lihat entri wikipedia Symbol Table .
sumber
Tabel simbol adalah struktur data penting yang dibuat dan dipelihara oleh penyusun untuk menyimpan informasi tentang terjadinya berbagai entitas seperti nama variabel, nama fungsi, objek, kelas, antarmuka, dll.
sumber