Ai đó có thể mô tả bảng ký hiệu là gì trong ngữ cảnh của C và C ++ không?
Câu trả lời:
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 ký hiệu 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 duy nhất thành một tệp đối tượng có đuôi .obj hoặc .o. Điều này chứa một bộ sưu tập mã thực thi và dữ liệu mà trình liên kết có thể xử lý thành một ứng dụng đang hoạt động hoặc thư viện được chia sẻ. 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 được. 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 đưa địa chỉ cuối cùng của quy trình vào tệp đối tượng. Thay vào đó, nó đặt giá trị trình giữ chỗ vào mã và thêm ghi chú yêu cầu trình liên kết tra cứu 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ó đang xử lý và gắn vị trí cuối cùng ở đó.
Thứ hai, cũng có bảng ký hiệu trong thư viện được chia sẻ hoặc DLL. Điều này do trình liên kết tạo ra và dùng để đặt tên cho tất cả các chức năng và 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 trong thời gian chạy, giải quyết các tham chiếu mở đến những tên đó đến vị trí mà 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 xuất sắc của John Levine "Những kẻ liên kết và những kẻ xúc lật". văn bản liên kết
Nói một cách ngắn gọn, đó là ánh xạ tên mà 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ư kiểu, phạm vi và kích thước. Nó được sử dụng bởi trình biên dịch.
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, v.v. mà trình biên dịch đang nhắm mục tiêu.
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 đó. Từ bản in này, sau đó bạn có thể giải mã các ký hiệu trình liên kết đang được sử dụng từ tên bị lệch của chúng .
Bảng ký hiệu là danh sách các "ký hiệu" trong một chương trình / đơn vị. Các ký hiệu 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ớ.
Kiểm tra mục nhập wikipedia Bảng Biểu tượng .
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 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.