2010-10-20 25 views
5

Trong khi thực hiện một số đọc, tôi đã xem các thuật ngữ "Ngôn ngữ trung gian" và "3AC".Ba Mã địa chỉ (TAC/3AC)

IL, như tôi hiểu, là "bước" trung gian trong quá trình biên dịch mã nguồn. Cụ thể hơn, tôi đang đọc về bytecode (Java) và C.

Cách tôi diễn giải nó (đúng nếu tôi sai) là;

Source Code 1 (ví dụ Lisp.) -> Intermediate Language (C) -> hội Language -> Máy Mã

Source Code 2 (ví dụ Java.) -> Bytecode -> Java Máy ảo

Vì vậy, dựa trên đó, tôi đang đấu tranh để xem Mã địa chỉ ba (TAC/3AC) phát huy tác dụng và nội dung nào được sử dụng.

Trả lời

8

Mã ba địa chỉ (TAC) là biểu diễn trung gian được sử dụng trong hầu hết các trình biên dịch . Về cơ bản, đây là ngôn ngữ lắp ráp chung nằm ở đầu dưới của các IR trung cấp . Một số biến thể của 2, 3 hoặc 4 mã địa chỉ là khá phổ biến được sử dụng như một IR, vì nó bản đồ tốt cho hầu hết các ngôn ngữ lắp ráp.

Lệnh TAC có thể có tối đa ba toán hạng. Các toán hạng có thể là hai toán hạng cho toán tử số học nhị phân và vị trí kết quả thứ ba hoặc toán hạng tới so sánh với 0 và vị trí thứ hai để phân nhánh, v.v. Ví dụ, dưới đây về đầu là một biểu thức số học và ở phía dưới, là một bản dịch sang TAC hướng dẫn:

//Expresion 
     a = b * c + b * d; 
//3AC 
     _t1 = b * c; 
     _t2 = b * d; 
     _t3 = _t1 + _t2; 
     a = _t3; 

Nguồn: http://web.archive.org/web/20151010192637/http://www.dound.com/courses/cs143/handouts/17-TAC-Examples.pdf

Các vấn đề liên quan