Mã ba địa chỉ là một loại mã trung gian dễ tạo và chuyển đổi sang mã máy. Nó chỉ có thể định nghĩa một biểu thức với ba địa chỉ và một toán tử. Về cơ bản, ba mã địa chỉ giúp xác định trình tự các hoạt động được thực hiện bởi trình biên dịch
Con trỏ cho ba mã địa chỉ
- Mã ba địa chỉ được coi là mã trung gian và được sử dụng bằng cách tối ưu hóa trình biên dịch
- Trong mã ba địa chỉ, biểu thức đã cho được chia thành nhiều nguyên tắc. Các hướng dẫn này dịch sang hợp ngữ một cách dễ dàng
- Ba toán hạng được yêu cầu cho mỗi trong số ba hướng dẫn mã địa chỉ. Đó là toán tử nhị phân và phép gán kết hợp
Đại diện chung
P. = [-r * q] + [-r * s]
Mã ba địa chỉ như sau
t1. = -r
t2. = q*t1
t3. = -r
t4. = s * t3
t5. = t2 + t4
P. = t5
Ở đây, t được sử dụng làm thanh ghi trong chương trình đích
Thực hiện ba mã địa chỉ
Có 2 đại diện của ba mã địa chỉ, cụ thể là
- tăng gấp bốn lần
- Bộ ba
1. tăng gấp bốn lần
Để triển khai ba mã địa chỉ, bộ tứ có bốn trường. Tên của toán tử, toán hạng nguồn thứ nhất, toán hạng nguồn thứ hai và kết quả đều được chứa trong trường bộ bốn
trường tăng gấp bốn lần
Toán tử Nguồn 1 Nguồn 2 Đích
Thí dụ
P. = -q * r + s
Mã ba địa chỉ như sau
t1. = -q
t2. = r + s
t3. = t1 * t2
P. = t3
2. Bộ ba
Để triển khai ba mã địa chỉ, bộ ba có ba trường. Tên của toán tử, toán hạng nguồn thứ nhất và toán hạng nguồn thứ hai đều được chứa trong trường bộ ba
ba trường
Toán tử Nguồn 1 Nguồn 2
Ví dụ – p. = -q * r + s
Ba mã địa chỉ như sau
t1. = -q t2. = r + sM t3. = t1 * t2 p. = t3
vấn đề thực hành
Q1. Xét đoạn mã sau
x = u–t;
y = x * v;
x = y + w;
y = t – z;
y = x * y;
Số lượng biến tổng tối thiểu cần thiết để chuyển đổi đoạn mã trên thành biểu mẫu chuyển nhượng đơn tĩnh là _______
quý 2. Hãy xem xét mã trung gian đưa ra dưới đây
[1] tôi = 1
[2] j = 1
[3] t1 = 5*i
[4] t2 = t1+ j
[5] t3 = 4 * t2
[6] t4 = t3
[7] a[t4] = – 1
[8] j = j + 1
[9] nếu j < = 5 goto [3]
[10] tôi = tôi + 1
[11] nếu tôi < 5 goto [2]
Số nút và cạnh trong biểu đồ luồng điều khiển được xây dựng cho đoạn mã trên tương ứng là
- [A] 5 và 7
- [B] 6 và 7
- [C] 5 và 5
- [Đ] 7 và 8
Q3. Đối với chương trình C truy cập X[i][j][k], mã trung gian sau đây được tạo bởi trình biên dịch. Giả sử rằng kích thước của một số nguyên là 32 bit và kích thước của một ký tự là 8 bit
t0 = tôi * 1024
t1 = j * 32
t2 = k * 4
t3 = t1 + t0
t4 = t3 + t2
t5 = X[t4]
Phát biểu nào sau đây về mã nguồn của chương trình C là ĐÚNG?
[A] X được khai báo là “int X[32][32][8]”
[B] X được khai báo là “int X[4][1024][32]”
[C] X được khai báo là “char X[4][32][8]”
[D] X được khai báo là “char X[32][16][2]”
Cũng khám phá,
Phân tích cú pháp trong Ghi chú thiết kế trình biên dịch cho GATE . Sự khác biệt giữa Trình biên dịch và Trình thông dịch . Môi trường thời gian chạy trong thiết kế trình biên dịch
Câu hỏi thường gặp liên quan đến mã ba địa chỉ
Hai mã địa chỉ có thể được biểu diễn dưới hai dạng. Các đại diện của ba mã địa chỉ là gì?
1. Tăng gấp bốn lần
2. Bộ ba
Hãy tiếp tục học và theo dõi để nhận thông tin cập nhật mới nhất về Kỳ thi GATE cùng với Tiêu chí đủ điều kiện, Giáo trình GATE cho CSE [Kỹ thuật khoa học máy tính], Ghi chú GATE CSE, Tài liệu câu hỏi GATE CSE, v.v.
Trước khi bạn xem qua bài viết này, hãy đảm bảo rằng bạn đã xem qua bài viết trước về Three Address Code
Chúng tôi đã thảo luận-
- Mã ba địa chỉ là một dạng mã trung gian
- Nó được tạo bởi trình biên dịch để triển khai Tối ưu hóa mã
- Nó sử dụng tối đa ba địa chỉ để đại diện cho bất kỳ câu lệnh nào
Trong bài viết này, chúng ta sẽ thảo luận về Triển khai mã ba địa chỉ
Thực hiện-
Mã ba địa chỉ được triển khai dưới dạng bản ghi với các trường địa chỉ
Các biểu diễn thường được sử dụng để triển khai Mã ba địa chỉ là-
- tăng gấp bốn lần
- Bộ ba
- Bộ ba gián tiếp
1. tăng gấp bốn lần-
Trong biểu diễn tăng gấp bốn lần, mỗi lệnh được chia thành 4 trường khác nhau sau đây-
op, arg1, arg2, kết quả
Nơi đây-
- Trường op được sử dụng để lưu mã nội bộ của toán tử
- Các trường arg1 và arg2 được sử dụng để lưu trữ hai toán hạng được sử dụng
- Trường kết quả được sử dụng để lưu trữ kết quả của biểu thức
ngoại lệ
Có những ngoại lệ sau-
Ngoại lệ-01
Để đại diện cho tuyên bố x = op y, chúng tôi đặt-
- op trong trường toán tử
- y trong trường arg1
- x trong trường kết quả
- trường arg2 vẫn chưa được sử dụng
Ngoại lệ-02
Để đại diện cho tuyên bố như param t1, chúng tôi đặt-
- param trong trường toán tử
- t1 trong trường arg1
- Cả trường arg2 và trường kết quả đều không được sử dụng
Ngoại lệ-03
Để thể hiện các câu lệnh nhảy vô điều kiện và có điều kiện, chúng ta đặt nhãn của mục tiêu trong trường kết quả
2. Bộ ba-
Trong đại diện bộ ba,
- Tài liệu tham khảo cho các hướng dẫn được thực hiện
- Biến tạm thời không được sử dụng
3. Bộ ba gián tiếp-
- Biểu diễn này là một cải tiến so với biểu diễn bộ ba
- Nó sử dụng một mảng lệnh bổ sung để liệt kê các con trỏ tới bộ ba theo thứ tự mong muốn
- Do đó, thay vì vị trí, con trỏ được sử dụng để lưu kết quả
- Nó cho phép các trình tối ưu hóa dễ dàng định vị lại biểu thức con để tạo mã được tối ưu hóa
CÁC VẤN ĐỀ THỰC HÀNH DỰA TRÊN BỘ QUÂN, BỘ BA VÀ BỘ BA GIÁN TIẾP-
Vấn đề-01
Dịch biểu thức sau sang bộ ba, bộ ba và bộ ba gián tiếp
a + b x c / e ↑ f + b x c
Giải pháp-
Mã ba địa chỉ cho biểu thức đã cho là-
T1 = e ↑ f
T2 = b x c
T3 = T2 / T1
T4 = b x a
T5 = một + T3
T6 = T5 + T4
Bây giờ, chúng tôi viết các đại diện cần thiết-
Đại diện tăng gấp bốn lần-
Vị tríOpArg1Arg2Kết quả[0]↑efT1[1]xbcT2[2]/T2T1T3[3]xbaT4[4]+aT3T5[5]+T5T4T6
Bộ ba đại diện-
Vị tríOpArg1Arg2[0]↑ef[1]xbc[2]/[1][0][3]xba[4]+a[2][5]+[4][3]
Đại diện ba lần gián tiếp-
Báo cáo35[0]36[1]37[2]38[3]39[4]40[5]
Vấn đề-02
Dịch biểu thức sau sang bộ ba, bộ ba và bộ ba gián tiếp
a = b x – c + b x – c
Giải pháp-
Mã ba địa chỉ cho biểu thức đã cho là-
T1 = âm cực c
T2 = b x T1
T3 = âm cực c
T4 = b x T3
T5 = T2 + T4
một = T5
Bây giờ, chúng tôi viết các đại diện cần thiết-
Đại diện tăng gấp bốn lần-
Vị tríOpArg1Arg2Kết quả[1]umuscT1[2]xbT1T2[3]umuscT3[4]xbT3T4[5]+T2T4T5[6]=T5a
Bộ ba đại diện-
Vị tríOpArg1Arg2[1]umusc[2]xb[1][3]umusc[4]xb[3][5]+[2][4][6]=a[5]
Đại diện ba lần gián tiếp-
Báo cáo35[1]36[2]37[3]38[4]39[5]40[6]
Vị tríOpArg1Arg2[1]umusc[2]xb[1][3]umusc[4]xb[3][5]+[2][4][6]=a[5]
Để hiểu rõ hơn về Bộ tứ, Bộ ba và Bộ ba gián tiếp,
Xem Video bài giảng này
Tải xuống ghi chú viết tay tại đây-
Bài viết tiếp theo- Biểu đồ khối và luồng cơ bản
Nhận thêm ghi chú và tài liệu học tập khác của Thiết kế trình biên dịch
Xem video bài giảng bằng cách truy cập kênh YouTube LearnVidFun của chúng tôi
Tóm lược
Tên bài viết
Bộ ba, bộ ba và bộ ba gián tiếp
Sự miêu tả
Trong thiết kế trình biên dịch, Mã ba địa chỉ được triển khai dưới dạng bản ghi với các trường địa chỉ. Các biểu diễn được sử dụng là-Bộ tứ, Bộ ba và Bộ ba gián tiếp. Các vấn đề về bộ ba, bộ ba và bộ ba gián tiếp