intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Nhập môn chương trình dịch: Chương 6 - Hoàng Anh Việt

Chia sẻ: Diên Vu | Ngày: | Loại File: PDF | Số trang:27

65
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Nhập môn chương trình dịch - Chương 6: Sinh mã trung gian" giới thiệu tới sinh viên các kiến thức: Ngôn ngữ trung gian, một số ngôn ngữ trung gian, mô tả các nút biểu thức của IR, toán tử, mô tả các nút lệnh của IR, cây sinh IR,... Đây là một tài liệu hữu ích dành cho các bạn sinh viên công nghệ thông tin dùn làm tài liệu học tập và nghiên cứu.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Nhập môn chương trình dịch: Chương 6 - Hoàng Anh Việt

Bài 6.<br /> SINH MÃ TRUNG GIAN<br /> <br /> Hoàng Anh Việt<br /> Viện CNTT&TT - ĐHBKHN<br /> 1<br /> <br /> Mô tả các bước dịch (1)<br /> Mã nguồn (dãy các kí tự)<br /> <br /> Phân tích từ vựng<br /> <br /> If (a == 0) min = a;<br /> <br /> Dãy các từ tố (token)<br /> If ( Id:a == 0 ) Id:min = Id:a ;<br /> <br /> if<br /> <br /> Cây cú pháp<br /> ==<br /> a<br /> <br /> =<br /> 0 min<br /> <br /> Cây cú pháp điều khiển<br /> boolean ==<br /> int a<br /> <br /> Phân tích cú pháp<br /> ;<br /> a<br /> <br /> Phân tích ngữ nghĩa<br /> <br /> if<br /> <br /> = int<br /> <br /> int 0 int<br /> min<br /> lvalue<br /> <br /> a<br /> <br /> ;<br /> <br /> int<br /> <br /> Mô tả các bước dịch (2)<br /> if<br /> <br /> boolean ==<br /> <br /> = int<br /> <br /> Sinh mã trung gian<br /> <br /> ;<br /> <br /> int<br /> int 0 int<br /> min<br /> a<br /> lvalue<br /> SEQ(CJUMP(TEMP(a) == 0, L1, L2),<br /> LABEL(L1),<br /> TEMP(min) = TEMP(a)<br /> LABEL(L2))<br /> int a<br /> <br /> cmp rb, 0<br /> jnz L2<br /> L1: mov ra, rb<br /> L2:<br /> <br /> Sinh mã assembly<br /> <br /> Tối ưu mã<br /> cmp ecx, 0<br /> cmovz edx,ecx<br /> <br /> Ngôn ngữ trung gian<br /> • Là ngôn ngữ cho một loại máy trừu tượng<br /> • Cho phép sinh mã không phụ thuộc vào máy<br /> đích<br /> • Cho phép tối ưu mã trước khi sinh mã máy thật<br /> sự<br /> Pentium<br /> Cây cú pháp<br /> +<br /> thông tin điều khiển<br /> <br /> Java bytecode<br /> <br /> AMD<br /> <br /> Ngôn ngữ trung gian<br /> • Dễ sinh ra từ cây cú pháp<br /> • Dễ sinh mã máy<br /> • Số lượng lệnh nhỏ, gọn<br /> – Dễ tối ưu mã<br /> – Dễ chuyển sang loại mã máy khác<br /> <br /> Cây cú pháp (>40 nút)<br /> <br /> Mã trung gian (13 nút)<br /> Pentium (>200 lệnh)<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2