Ba mã địa chỉ cho vòng lặp

  • Mã ba địa chỉ là mã trung gian. Nó được sử dụng bởi các trình biên dịch tối ưu hóa
  • Trong mã ba địa chỉ, biểu thức đã cho được chia thành nhiều lệnh riêng biệt. Các hướng dẫn này có thể dễ dàng dịch sang ngôn ngữ lắp ráp
  • Mỗi lệnh mã ba địa chỉ có tối đa ba toán hạng. Nó là sự kết hợp giữa phép gán và toán tử nhị phân

Ví dụ

GivenExpression

Mã ba địa chỉ như sau

         t1 := -c
         t2 := b*t1
         t3 := -c
         t4 := d * t3
         t5 := t2 + t4
         a := t5

t được sử dụng làm thanh ghi trong chương trình đích

Ba mã địa chỉ có thể được biểu diễn dưới hai dạng. tăng gấp bốn và gấp ba lần

Khối cơ bản – Khối cơ bản là một chuỗi ba câu lệnh địa chỉ trong đó điều khiển đi vào ở đầu và chỉ rời ở cuối mà không có bất kỳ bước nhảy hoặc dừng nào



Tìm khối cơ bản –
Để tìm khối cơ bản, chúng ta cần tìm các khối dẫn đầu trong chương trình. Sau đó, một khối cơ bản sẽ bắt đầu từ một nhà lãnh đạo đến nhà lãnh đạo tiếp theo nhưng không bao gồm nhà lãnh đạo tiếp theo. Điều đó có nghĩa là nếu bạn phát hiện ra rằng dòng số 1 là dòng đầu tiên và dòng số 15 là dòng tiếp theo, thì dòng từ 1 đến 14 là một khối cơ bản, nhưng không bao gồm dòng số 15.

Xác định người lãnh đạo trong Khối cơ bản –

  1. Tuyên bố đầu tiên luôn là một nhà lãnh đạo
  2. Tuyên bố là mục tiêu của tuyên bố có điều kiện hoặc không có điều kiện là một nhà lãnh đạo
  3. Tuyên bố ngay sau một tuyên bố có điều kiện hoặc không có điều kiện là một nhà lãnh đạo

fact(x)

{

    int f = 1;

    for (i = 2; i <= x; i++)

pip install prettytable
0
pip install prettytable
1

    {1 {2

{3

Ba địa chỉ Mã của mã C ở trên

  1. f = 1;
  2. tôi = 2;
  3. nếu (i > x) goto 9
  4. t1 = f*i;
  5. f = t1;
  6. t2 = i + 1;
  7. tôi = t2;
  8. goto(3)
  9. chương trình gọi goto

Người lãnh đạo và khối cơ bản –

Ba mã địa chỉ cho vòng lặp

Phân tích luồng điều khiển –

Ba mã địa chỉ cho vòng lặp

Nếu điều khiển nhập B1 không có tùy chọn nào khác sau B1, nó phải nhập B2. Bây giờ, nếu điều khiển vào B2, thì tùy theo điều kiện mà điều khiển sẽ chảy, nếu điều kiện đúng chúng ta sẽ đến dòng số 9, nghĩa là 9 không là gì ngoài B4. Nhưng nếu điều kiện là điều khiển sai, hãy chuyển sang khối B3 tiếp theo. Sau B3, không có điều kiện nào cả, chúng ta đi thẳng đến câu lệnh thứ 3 B2. Biểu đồ luồng điều khiển ở trên có một chu kỳ giữa B2 và B3 không là gì ngoài một vòng lặp

Trình biên dịch mã ba địa chỉ

Chứa mã cho vòng lặp if-else và while và để tạo vòng lặp ở định dạng Mã ba địa chỉ

Trước khi chạy cái này, hãy đảm bảo rằng mô-đun prettytable đã được cài đặt nếu không bạn có thể chạy

pip install prettytable

Mã nguồn cho vòng lặp for
Mã nguồn cho vòng lặp while
Mã nguồn cho câu lệnh if-else

đầu ra

Trong khi lặp lại

Ba mã địa chỉ cho vòng lặp

cho vòng lặp

Không có vòng lặp "while" Có "while" trung gian
Ba mã địa chỉ cho vòng lặp
Ba mã địa chỉ cho vòng lặp

Vòng lặp While

Ba mã địa chỉ cho vòng lặp

người đóng góp

  • @KautubhDamania
  • @GaurangAthavale
  • @mihir2510
  • @g-bhagwanani

Khối cơ bản – Khối cơ bản là một chuỗi ba câu lệnh địa chỉ trong đó điều khiển đi vào ở đầu và chỉ rời ở cuối mà không có bất kỳ bước nhảy hoặc dừng nào

Tìm khối cơ bản –
Để tìm khối cơ bản, chúng ta cần tìm các khối dẫn đầu trong chương trình. Sau đó, một khối cơ bản sẽ bắt đầu từ một nhà lãnh đạo đến nhà lãnh đạo tiếp theo nhưng không bao gồm nhà lãnh đạo tiếp theo. Điều này có nghĩa là nếu bạn phát hiện ra rằng dòng số 1 là dòng đầu tiên và dòng số 15 là dòng tiếp theo, thì dòng từ 1 đến 14 là một khối cơ bản, nhưng không bao gồm dòng số 15.

Xác định người lãnh đạo trong Khối cơ bản –

  1. Tuyên bố đầu tiên luôn là một nhà lãnh đạo
  2. Tuyên bố là mục tiêu của tuyên bố có điều kiện hoặc không có điều kiện là một nhà lãnh đạo
  3. Tuyên bố ngay sau một tuyên bố có điều kiện hoặc không có điều kiện là một nhà lãnh đạo




fact(x)

{

    int f = 1;

    for (i = 2; i <= x; i++)

pip install prettytable
0
pip install prettytable
1

    {1 {2

{3

Ba địa chỉ Mã của mã C ở trên

  1. f = 1;
  2. tôi = 2;
  3. nếu (i > x) goto 9
  4. t1 = f*i;
  5. f = t1;
  6. t2 = i + 1;
  7. tôi = t2;
  8. goto(3)
  9. chương trình gọi goto

Người lãnh đạo và khối cơ bản –

Ba mã địa chỉ cho vòng lặp

Phân tích luồng điều khiển –

Ba mã địa chỉ cho vòng lặp

Nếu điều khiển nhập B1 không có tùy chọn nào khác sau B1, nó phải nhập B2. Bây giờ, nếu điều khiển nhập vào B2, thì tùy thuộc vào điều kiện, điều khiển sẽ chảy, nếu điều kiện là đúng, chúng ta sẽ đến dòng số 9, có nghĩa là 9 không là gì ngoài B4. Nhưng nếu điều kiện sai, điều khiển sẽ chuyển sang khối tiếp theo B3. Sau B3, không có điều kiện nào cả, chúng ta đi thẳng đến câu lệnh thứ 3 B2. Biểu đồ luồng điều khiển ở trên có một chu kỳ giữa B2 và B3 không là gì ngoài một vòng lặp

3 mã địa chỉ trong trình biên dịch là gì?

Mã ba địa chỉ là một loại mã trung gian dễ tạo và có thể dễ dàng chuyển đổi thành mã máy . Nó sử dụng tối đa ba địa chỉ và một toán tử để biểu diễn một biểu thức và giá trị được tính ở mỗi lệnh được lưu trữ trong biến tạm thời do trình biên dịch tạo ra.

Các loại mã ba địa chỉ là gì?

t được sử dụng làm thanh ghi trong chương trình đích. Ba mã địa chỉ có thể được biểu diễn dưới hai dạng. tăng gấp bốn và gấp ba lần

Làm cách nào để chuyển đổi ba câu lệnh địa chỉ thành một khối cơ bản?

Chuỗi ba câu lệnh địa chỉ sau đây tạo thành một khối cơ bản. .
t1. = x * x
t2. = x * y
t3. = 2 * t2
t4. = t1 + t3
t5. = y * y
t6. = t4 + t5

Bộ ba trong thiết kế trình biên dịch là gì?

Bộ ba có ba trường để triển khai ba mã địa chỉ. Trường bộ ba chứa 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. Trong bộ ba, kết quả của các biểu thức con tương ứng được biểu thị bằng vị trí của biểu thức