Pha vs Pass trong Trình biên dịch
Nói chung, trình biên dịch là một chương trình máy tính đọc một chương trình được viết bằng một ngôn ngữ, được gọi là ngôn ngữ nguồn và dịch nó sang ngôn ngữ khác, được gọi là ngôn ngữ đích. Theo truyền thống, ngôn ngữ nguồn là ngôn ngữ cấp cao như C ++ và ngôn ngữ đích là ngôn ngữ cấp thấp như ngôn ngữ hội. Vì vậy, trong các trình biên dịch nói chung có thể được xem là các dịch giả dịch từ ngôn ngữ này sang ngôn ngữ khác. Pass và Phase là hai thuật ngữ thường được sử dụng với trình biên dịch. Số lần vượt qua của trình biên dịch là số lần nó đi qua nguồn (hoặc một số hình thức biểu diễn của nó). Một trình biên dịch được chia thành các phần để thuận tiện cho việc xây dựng. Pha thường được sử dụng để gọi một phần độc lập như vậy của trình biên dịch.
Pass trong trình biên dịch là gì?
Một cách tiêu chuẩn để phân loại các trình biên dịch là theo số lượng qua Pass. Thông thường, biên dịch là một quá trình tương đối tốn tài nguyên và ban đầu các máy tính không có đủ bộ nhớ để chứa một chương trình hoàn thành công việc như vậy. Do hạn chế về tài nguyên phần cứng trong các máy tính đời đầu, các trình biên dịch đã được chia thành các chương trình con nhỏ hơn, thực hiện một phần công việc của nó bằng cách chuyển mã nguồn (tạo ra một mật khẩu vượt qua nguồn hoặc một số dạng khác của nó) và thực hiện phân tích , biến đổi và nhiệm vụ dịch thuật riêng biệt. Vì vậy, tùy thuộc vào phân loại này, trình biên dịch được xác định là trình biên dịch một lượt hoặc nhiều lượt.
Như tên cho thấy, trình biên dịch một lượt biên dịch trong một lần chạy. Viết trình biên dịch một lượt dễ dàng hơn và chúng cũng thực hiện nhanh hơn trình biên dịch nhiều lượt. Do đó, ngay cả tại thời điểm bạn gặp hạn chế về tài nguyên, các ngôn ngữ được thiết kế sao cho chúng có thể được biên dịch theo một lần (ví dụ: Pascal). Mặt khác, một trình biên dịch multi-pass điển hình được tạo thành từ một số giai đoạn chính. Giai đoạn đầu tiên là máy quét (còn được gọi là máy phân tích từ vựng). Trình quét đọc chương trình và chuyển đổi nó thành một chuỗi các mã thông báo. Giai đoạn thứ hai là trình phân tích cú pháp. Nó chuyển đổi chuỗi mã thông báo thành cây phân tích cú pháp (hoặc cây cú pháp trừu tượng), nắm bắt cấu trúc cú pháp của chương trình. Giai đoạn tiếp theo là diễn giải ngữ nghĩa của cấu trúc cú pháp. Các giai đoạn tối ưu hóa mã và giai đoạn tạo mã cuối cùng tuân theo điều này.
Giai đoạn trong trình biên dịch là gì?
Giai đoạn thuật ngữ thường xuất hiện khi bạn nói về xây dựng trình biên dịch. Ban đầu, trình biên dịch là mọi phần đơn giản của phần mềm đơn, nguyên khối được viết bởi một người để biên dịch một ngôn ngữ đơn giản. Nhưng khi mã nguồn của ngôn ngữ được dịch trở nên phức tạp và lớn, trình biên dịch được chia thành nhiều giai đoạn (tương đối độc lập). Ưu điểm của việc có các giai đoạn khác nhau là sự phát triển của trình biên dịch có thể được phân phối giữa một nhóm các nhà phát triển. Hơn nữa, nó cải thiện tính mô đun và tái sử dụng bằng cách cho phép các pha được thay thế bằng các pha cải tiến hoặc các pha bổ sung (như tối ưu hóa thêm) được thêm vào trình biên dịch. Quá trình phân chia việc biên dịch thành các giai đoạn được giới thiệu bởi PQCC (Dự án Trình biên dịch chất lượng sản xuất) tại Đại học Carnegie Melon. Họ giới thiệu các thuật ngữ front end, middle end và back end. Hầu hết các trình biên dịch có ít nhất hai giai đoạn. Nhưng thông thường, back end và front end đóng gói các pha này.
Sự khác biệt giữa Pha và Đạt trong Trình biên dịch là gì??
Phase và Pass là hai thuật ngữ được sử dụng trong lĩnh vực trình biên dịch. Pass là một lần duy nhất trình biên dịch chuyển qua (đi qua) mã nguồn hoặc một số đại diện khác của nó. Thông thường, hầu hết các trình biên dịch có ít nhất hai giai đoạn được gọi là front end và back end, trong khi chúng có thể là một lần hoặc nhiều lượt. Pha được sử dụng để phân loại trình biên dịch theo cấu trúc, trong khi pass được sử dụng để phân loại trình biên dịch theo cách chúng hoạt động.