Sự khác biệt giữa giai đoạn và vượt qua trong trình biên dịch

Anonim

Giai đoạn 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 được viết bằng một ngôn ngữ, được gọi là ngôn ngữ nguồn, và dịch nó sang một ngôn ngữ khác, được gọi là ngôn ngữ đích. Theo truyền thống, ngôn ngữ nguồn là một ngôn ngữ cấp cao như C ++ và ngôn ngữ đích là một ngôn ngữ bậc thấp như ngôn ngữ Assembly. Vì vậy, trong trình biên dịch chung có thể được xem như 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 đi của một trình biên dịch là số lần nó đi qua nguồn (hoặc một số hình thức đại diện của nó). Một trình biên dịch được chia thành các bộ phận cho sự tiện lợi của xây dựng. Giai đoạn thường được sử dụng để gọi một phần độc lập duy nhất của trình biên dịch.

Pass là gì trong một trình biên dịch?

Một cách chuẩn để phân loại trình biên dịch là số "pass". Thông thường, biên dịch là một quy trình tương đối tốn kém về tài nguyên và ban đầu 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. Do giới hạn này của các nguồn tài nguyên phần cứng trong các máy tính đầu tiên, trình biên dịch được chia nhỏ thành các chương trình con nhỏ hơn đã thực hiện công việc một phần bằng cách đi qua mã nguồn (thực hiện một "pass" qua nguồn hoặc một dạng khác của nó) và thực hiện phân tích, chuyển đổi và các tác vụ dịch riêng. Vì vậy, tùy thuộc vào sự phân loại này, các trình biên dịch được xác định như các trình biên dịch một-pass hoặc multi-pass.

Như tên cho thấy, trình biên dịch một lần biên dịch biên dịch trong một lần vượt qua. Nó dễ dàng hơn để viết một trình biên dịch một lần và họ thực hiện nhanh hơn nhiều trình biên dịch. Do đó, ngay cả khi bạn có hạn chế về tài nguyên, ngôn ngữ được thiết kế sao cho chúng có thể được biên soạn bằng một lần (ví dụ: Pascal). Mặt khác, một trình biên dịch đa-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 gọi là máy phân tích tiếng). Máy quét sẽ đọ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 các mã thông báo thành một cây phân tích cú pháp (hoặc một cây cú pháp trừu tượng), chứa cấu trúc cú pháp của chương trình. Giai đoạn tiếp theo là giải thích ngữ nghĩa của cấu trúc cú pháp. Các giai đoạn tối ưu hoá mã và giai đoạn tạo mã cuối cùng theo dõi điều này.

Pha trong một 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à tất cả các phần đơn giản của một phần mềm đơn khối được viết bởi một người để biên soạn 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 nhỏ thành nhiều (tương đối độc lập) các giai đoạn.Lợi thế 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 mô đun và tái sử dụng bằng cách cho phép các giai đoạn được thay thế bởi những cải tiến hoặc thêm các giai đoạn (như tối ưu hoá hơn nữa) để được thêm vào trình biên dịch. Quá trình phân chia 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 trình biên dịch) 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, mặt sau và đầu cuối đóng gói các giai đoạn này.

sự khác biệt giữa Pha và Pass trong trình biên dịch là gì?

Giai đoạn và Đèo là hai thuật ngữ được sử dụng trong khu vực trình biên dịch. Một pass là một thời gian trình biên dịch đi 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 gọi là đầu cuối và cuối kết thúc, trong khi chúng có thể là một-pass hoặc đa-pass. Giai đoạn được sử dụng để phân loại trình biên dịch theo xây dựng, trong khi vượt qua được sử dụng để phân loại trình biên dịch theo cách chúng hoạt động.