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] goto 9

  • t1 = f*i;
  • f = t1;
  • t2 = i + 1;
  • tôi = t2;
  • goto[3]
  • chương trình gọi goto
  • Người lãnh đạo và khối cơ bản –

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

    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

    cho vòng lặp

    Không có vòng lặp "while" Có "while" trung gian

    Vòng lặp While

    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] goto 9

  • t1 = f*i;
  • f = t1;
  • t2 = i + 1;
  • tôi = t2;
  • goto[3]
  • chương trình gọi goto
  • Người lãnh đạo và khối cơ bản –

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

    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

    Chủ Đề