Khi tôi biết về lập trình, ở đâu đó trong nửa sau của thế kỷ trước, tôi đã học được rằng mọi thứ cần phải được chuyển đổi thành mã máy. Các ngôn ngữ kịch bản sẽ quyết định mã nào cần gọi dựa trên mã kịch bản. Mã biên dịch đầu tiên sẽ được biên dịch thành mã p, viết tắt của mã được biên dịch trước, mã này cần được liên kết với mã được biên dịch trước khác để tạo ra một ứng dụng đầy đủ. Tôi thích Turbo Pascal trở lại sau đó, chỉ đơn giản bởi vì Turbo Pascal biên dịch trực tiếp mã machione và nó không sử dụng mã p trung gian ở giữa. Đó là, cho đến khi Turbo Pascal 4.0, tạo ra các đơn vị biên dịch * .tpu. Hầu hết các trình biên dịch khác sẽ biên dịch sang định dạng .obj.
Khi Java được tạo, một cái gì đó tương đối mới bắt đầu trở nên phổ biến. Về cơ bản, một trình biên dịch Java chỉ biên dịch mã cho một số tệp tập lệnh nhị phân. Kịch bản này sau đó có thể được giải thích, mặc dù cơ chế đó cũng sớm thay đổi.
Ngày nay, phiên dịch đã gần như tuyệt chủng. Hầu hết các ngôn ngữ kịch bản đầu tiên sẽ được biên dịch thành mã máy, mã máy sau đó được lưu trữ trong một số bộ nhớ cache và do đó nó có thể được thực thi nhanh chóng, mà không cần phải giải thích lại bất kỳ lệnh lặp nào. Điều này hoạt động tốt cho văn bản và tập lệnh nhị phân. PHP sẽ là một ví dụ về một kịch bản dựa trên văn bản. Java và .NET là các tập lệnh nhị phân, vì bạn thường biên dịch mã sang định dạng tập lệnh nhị phân này. (Họ sẽ gọi nó là khác nhau, nhưng tôi nghĩ rằng các tập lệnh nhị phân có vẻ tốt hơn.)
Nói chung, mẹo là chuyển đổi mã thành mã máy, sử dụng bất kỳ phương tiện nào có thể. Đã có nhiều cách để làm như vậy và nó có một chút phức tạp để làm cho nó tất cả rõ ràng.
Tôi cũng nhớ thời gian khi tôi có thể viết một ứng dụng C++ trong đó các câu lệnh SQL sẽ được đặt bên trong chính mã đó. Điều này cũng rất thiết thực, nhưng nó yêu cầu một bộ tiền xử lý trước tiên sẽ phân tích các câu lệnh SQL từ mã để chuyển đổi nó sang các câu lệnh C++ khác và bằng cách thay thế các câu lệnh SQL bằng các lệnh C++ phức tạp hơn. Sau đó toàn bộ điều sẽ được biên dịch thành mã p. Sau đó, bạn cần phải liên kết nó với các thư viện SQL bổ sung và cuối cùng bạn đã có một tệp thực thi.
Nguồn
2009-10-04 09:15:27
câu hỏi tài nguyên trình biên dịch dứt khoát trên SO: http: // stackoverflow.com/questions/1669/learning-to-write-a-compiler Có một số tài nguyên được đề xuất ở đó có một cách tiếp cận rất dễ dàng: nếu bạn có thể lập trình, bạn đã sẵn sàng để tìm hiểu các phương pháp biên dịch. Đừng sợ. Tôi thích hướng dẫn Crenshaw. – dmckee
^Đó là danh sách tài nguyên tuyệt vời. Cảm ơn. –