Ba mã địa chỉ cho a+a*(b-c)+(b-c)*d

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à

  1. tăng gấp bốn lần
  2. 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ỉ

Các đại diện của ba mã địa chỉ là gì?

Hai mã địa chỉ có thể được biểu diễn dưới hai dạng.
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à-

 

 

  1. tăng gấp bốn lần
  2. Bộ ba
  3. 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ị tríOpArg1Arg2[0]↑ef[1]xbe[2]/[1][0][3]xba[4]+a[2][5]+[4][3]

 

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

Các hình thức của mã ba địa chỉ là gì?

Mã ba địa chỉ là một chuỗi các câu lệnh có dạng tổng quát A. = B op C , trong đó A, B, C là tên do lập trình viên xác định, hằng số hoặc tên tạm thời do trình biên dịch tạo ra; . Nói một cách đơn giản, một mã có nhiều nhất ba địa chỉ trong một dòng được gọi là ba địa chỉ.

Làm thế nào các vòng lặp được phát hiện trong ba mã địa chỉ?

Để phát hiện các vòng lặp, chúng tôi sử dụng Phân tích luồng điều khiển [CFA] bằng Biểu đồ luồng chương trình [PFG]. .
f = 1;
tôi = 2;
nếu [i > x] goto 9
t1 = f*i;
f = t1;
t2 = i + 1;
tôi = t2;

Bộ ba gấp bốn lần và bộ ba gián tiếp là gì?

Quadruple là một cấu trúc chứa tối đa bốn trường, i. e. , toán tử, Đối số 1, Đối số 2 và Kết quả. Bộ ba có ba trường đại diện cho ba mã địa chỉ . Trường bộ ba bao gồm 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.

Mã mục tiêu là gì?

Mã đích có thể là mã máy đọc được hoặc mã hợp ngữ . Mỗi dòng trong mã được tối ưu hóa có thể ánh xạ tới một hoặc nhiều dòng trong mã máy [hoặc] hợp ngữ, do đó có 1. Ánh xạ N liên kết với chúng. 1. ánh xạ N. Các tính toán thường được cho là được thực hiện trên các vị trí bộ nhớ tốc độ cao, được gọi là các thanh ghi.

Chủ Đề