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
Ví 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.
Nó gán kết quả thu được sau khi giải biểu thức bên phải của toán tử gán cho toán hạng bên trái
2. Sao chép tuyên bố-
x = y
Đây,
- x và y là toán hạng
- = là toán tử gán
Nó sao chép và gán giá trị của toán hạng y cho toán hạng x
3. Nhảy có điều kiện-
Nếu x relop y goto X
Đây,
- x & y là toán hạng
- X là thẻ hoặc nhãn của câu lệnh đích
- relop là toán tử quan hệ
Nếu điều kiện “x relop y” được thỏa mãn, thì-
- Điều khiển được gửi trực tiếp đến vị trí được chỉ định bởi nhãn X
- Tất cả các tuyên bố ở giữa được bỏ qua
Nếu điều kiện “x relop y” không thành công, thì-
- Điều khiển không được gửi đến vị trí được chỉ định bởi nhãn X
- Câu lệnh tiếp theo xuất hiện trong trình tự thông thường được thực thi
4. Nhảy vô điều kiện-
Ở đây, X là thẻ hoặc nhãn của câu lệnh đích
Khi thực hiện tuyên bố,
- Điều khiển được gửi trực tiếp đến vị trí được chỉ định bởi nhãn X
- Tất cả các tuyên bố ở giữa được bỏ qua
5. Cuộc gọi thủ tục-
tham số x gọi p trả về y
Ở đây, p là một hàm lấy x làm tham số và trả về y
BÀI TOÁN THỰC HÀNH DỰA TRÊN BA ĐỊA CHỈ MÃ-
Để giải quyết các vấn đề, hãy Tìm hiểu về Mối quan hệ ưu tiên và Tính liên kết của các toán tử
Vấn đề-01
Viết ba mã địa chỉ cho biểu thức sau-
a = b + c + d
Dung dịch-
Biểu thức đã cho sẽ được giải như-
Mã ba địa chỉ cho biểu thức đã cho là-
[1] T1 = b + c
[2] T2 = T1 + d
[3] một = T2
Vấn đề-02
Viết ba mã địa chỉ cho biểu thức sau-
-[a x b] + [c + d] – [a + b + c + d]
Dung dịch-
Mã ba địa chỉ cho biểu thức đã cho là-
[1] T1 = a x b
[2] T2 = âm T1
[3] T3 = c + d
[4] T4 = T2 + T3
[5] T5 = a + b
[6] T6 = T3 + T5
[7] T7 = T4 – T6
Vấn đề-03
Viết ba mã địa chỉ cho biểu thức sau-
Nếu A < B thì 1 khác 0
Dung dịch-
Mã ba địa chỉ cho biểu thức đã cho là-
[1] Nếu [A < B] chọn [4]
[2] T1 = 0
[3] goto [5]
[4] T1 = 1
[5]
Vấn đề-04
Viết ba mã địa chỉ cho biểu thức sau-
Nếu A < B và C < D thì t = 1 khác t = 0
Dung dịch-
Mã ba địa chỉ cho biểu thức đã cho là-
[1] Nếu [A < B] chọn [3]
[2] goto [4]
[3] Nếu [C < D] chọn [6]
[4] t = 0
[5] goto [7]
[6] t = 1
[7]
Cũng đọc- Các vấn đề khác về ba mã địa chỉ
Để hiểu rõ hơn về Three Address Code,
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- Bộ tứ, Bộ ba và Bộ ba gián tiếp
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
Ba mã địa chỉ. ví dụ
Sự miêu tả
Trong thiết kế trình biên dịch, Three Address Code là một dạng mã trung gian. Ba ví dụ về mã địa chỉ và các hình thức phổ biến. Mã ba địa chỉ được tạo bởi trình biên dịch để thực hiện tối ưu hóa mã