it-swarm-vi.tech

Bảng biểu tượng là gì?

Ai đó có thể mô tả những gì một bảng biểu tượng trong bối cảnh của C và C++ không?

78
jdt141

Có hai ý nghĩa phổ biến và liên quan của bảng biểu tượng ở đây.

Đầu tiên, có bảng biểu tượng trong các tệp đối tượng của bạn. Thông thường, trình biên dịch C hoặc C++ biên dịch một tệp nguồn đơn thành một tệp đối tượng có phần mở rộng .obj hoặc .o. Điều này chứa một tập hợp mã và dữ liệu thực thi mà trình liên kết có thể xử lý thành một ứng dụng hoạt động hoặc thư viện dùng chung. Tệp đối tượng có cấu trúc dữ liệu được gọi là bảng ký hiệu trong đó ánh xạ các mục khác nhau trong tệp đối tượng thành các tên mà trình liên kết có thể hiểu. Nếu bạn gọi một hàm từ mã của mình, trình biên dịch sẽ không đặt địa chỉ cuối cùng của thường trình trong tệp đối tượng. Thay vào đó, nó đặt một giá trị giữ chỗ vào mã và thêm một ghi chú cho người liên kết tìm kiếm tham chiếu trong các bảng ký hiệu khác nhau từ tất cả các tệp đối tượng mà nó xử lý và dán vị trí cuối cùng ở đó.

Thứ hai, cũng có bảng biểu tượng trong thư viện dùng chung hoặc DLL. Điều này được tạo bởi trình liên kết và phục vụ để đặt tên cho tất cả các chức năng và các mục dữ liệu hiển thị cho người dùng của thư viện. Điều này cho phép hệ thống thực hiện liên kết thời gian chạy, giải quyết các tham chiếu mở tới các tên đó đến vị trí thư viện được tải trong bộ nhớ.

Nếu bạn muốn tìm hiểu thêm, tôi đề xuất cuốn sách tuyệt vời "Trình liên kết và trình tải" của John Levine. văn bản liên kết

73
Ben Combee

Tóm lại, đó là ánh xạ của tên bạn gán một biến cho địa chỉ của nó trong bộ nhớ, bao gồm siêu dữ liệu như loại, phạm vi và kích thước. Nó được sử dụng bởi trình biên dịch.

Đó là nói chung, không chỉ C [++] *. Về mặt kỹ thuật, nó không phải lúc nào cũng bao gồm địa chỉ bộ nhớ trực tiếp. Nó phụ thuộc vào ngôn ngữ, nền tảng, vv trình biên dịch đang nhắm mục tiêu.

22
Steve Landey

Trong Linux, bạn có thể sử dụng lệnh: 

nm [tệp đối tượng]

để liệt kê bảng ký hiệu của tệp đối tượng đó.

13
hdn

Bảng biểu tượng là danh sách "biểu tượng" trong một chương trình/đơn vị. Biểu tượng thường là tên của các biến hoặc hàm. Bảng ký hiệu có thể được sử dụng để xác định vị trí của các biến hoặc hàm trong bộ nhớ.

8
Joe Schneider

Kiểm tra mục Bảng biểu tượng wikipedia.

4
Allan Wind

Bảng biểu tượng là một cấu trúc dữ liệu quan trọng được tạo và duy trì bởi các trình biên dịch để lưu trữ thông tin về sự xuất hiện của các thực thể khác nhau như tên biến, tên hàm, đối tượng, lớp, giao diện, v.v.

0
rashedcs