TAILIEUCHUNG - Tài liệu trình biên dịch C (ĐH Cần Thơ) part 24

LỆNH GÁN 1. Tên trong bảng ký hiệu Xét lược đồ dịch để sinh ra mã lệnh 3 địa chỉ cho lệnh gán: S→ id := E E→ E1 + E2 E→ E1 * E2 E→ - E1 E→ ( E1 ) E→ id {p:=lookup( ); if p nil then emit( p ':=' ) else error } { := newtemp; emit( ':=' '+’ ) } { := newtemp; emit( ':=' '*’ ) } { := newtemp; emit( ':=' 'unimus' ) } { ) } { p:=lookup( ); if p nil then := p. | III. LỆNH GÁN 1. Tên trong bảng ký hiệu Xét lược đồ dịch để sinh ra mã lệnh 3 địa chỉ cho lệnh gán S id E p lookup if p nil then emit p else error E El E2 newtemp emit E E1 E2 newtemp emit E - E1 newtemp emit unimus E E1 E id p lookup if p nil then p else error Hình - Lược đồ dịch sinh mã lệnh ba địa chỉ cho lệnh gán Hàm lookup tìm trong bảng ký hiệu xem có hay không một tên được cho bởi . Nếu có thì trả về con trỏ của ô nếu không trả về nil. Xét luật sinh D proc id ND1 S Như trên đã nói hành vi kết hợp với ký hiệu chưa kết thúc N cho phép con trỏ của bảng ký hiệu cho chương trình con đang nằm trên đỉnh Stack tblptr. Các tên trong lệnh gán sinh ra bởi ký hiệu chưa kết thúc S sẽ được khai báo trong chương trình con này hoặc trong bao của nó. Khi tham khảo tới một tên thì trước hết hàm lookkup sẽ tìm xem có tên đó trong bảng ký hiệu hiện hành hay không. Bảng danh biểu hiện hành được trỏ bởi top tblptr . Nếu không thì dùng con trỏ ở trong header của bảng để tìm bảng ký hiệu bao nó và tìm tên trong đó. Nếu tên không được tìm thấy trong tất cả các mức thì lookup trả về nil. 2. Địa chỉ hóa các phần tử của mảng Các phần tử của mảng có thể truy xuất nhanh nếu chúng được liền trong một khối các ô nhớ kết tiếp nhau. Trong mảng một chiều nếu kích thước của một phần tử là w thì địa chỉ tương đối phần tử thứ i của mảng A được tính theo công thức Địa chỉ tương đối của A i base i-low w Trong đó low là cận dưới tập chỉ số base là địa chỉ tương đối của ô nhớ cấp phát cho mảng tức là địa chỉ tương đối của A low 176 Biến đổi một chút ta được Địa chỉ tương đối của A i i w base -low w Trong đó c base - low w có thể tính được tại thời gian dịch và lưu trong bảng ký hiệu. Do đó địa chỉ tương đối A i i w c. Mảng hai chiều co ỉthể xem như là một mảng theo một trong hai dạng theo dòng row_major hoặc theo cột colum_major a 1 1 a 1 2 a 1 3 a

TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.