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

Bài giảng môn học Trình biên dịch - Chương 9: Sinh mã đối tượng

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

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

Bài giảng chương 9 trình bày những nội dung cơ bản như: Các vấn đề thiết kế bộ sinh mã, máy đích, khối cơ bản và lưu đo, bộ sinh mã đơn giản, dag biểu diễn khối cơ bản dag là cấu trúc dữ liệu rất thích h, tạo mã đối tượng từ dag. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng môn học Trình biên dịch - Chương 9: Sinh mã đối tượng

CHÖÔNG 9<br /> SINH MAÕ ÑOÁI TÖÔÏNG<br /> Chöông<br /> <br /> Bieân dòch<br /> trình nguoàn phía tröôùc<br /> <br /> Maõ<br /> trung<br /> gian<br /> <br /> Boä toái öu<br /> maõ<br /> <br /> Maõ<br /> trung<br /> gian<br /> <br /> Chöông<br /> Boä sinh maõ<br /> ñoái töôïng trình dòch<br /> <br /> Baûng danh bieåu<br /> <br /> Hình 9.1. Vò trí cuûa boä sinh maõ ñoái töôïng<br /> 9.1. Caùc vaán ñeà thieát keá boä sinh maõ<br /> Ñaàu vaøo cuûa boä sinh maõ<br /> Chöông trình ñích<br /> <br /> Söï löïa choïn chæ thò<br /> Giaû söû ñoái vôùi phaùt bieåu ba ñòa chæ coù daïng x := y + z vôùi x, y, z töôïng<br /> tröng cho caùc vò trí nhôù. Chuùng ta coù theå dòch sang chuoãi maõ ñoái<br /> töôïng:<br /> MOV y, Ro<br /> <br /> /* caát y vaøo thanh ghi Ro */<br /> <br /> ADD z, Ro<br /> <br /> /* coäng z vaøo noäi dung Ro, keát quaû chöùa trong Ro */<br /> <br /> MOV Ro, x<br /> <br /> /* caát noäi dung Ro vaøo x */<br /> <br /> Tuy nhieân vieäc sinh maõ cho chuoãi caùc phaùt bieåu seõ daãn ñeán söï dö thöøa<br /> maõ. Nhö thí duï sau:<br /> a := b + c; d := a + e<br /> Chuùng ta chuyeån sang maõ ñoái töôïng:<br /> (1)<br /> <br /> MOV b, R0<br /> <br /> (2)<br /> <br /> ADD c. R0<br /> <br /> (3)<br /> <br /> MOV R0, a<br /> <br /> (4)<br /> <br /> MOV a, R0<br /> <br /> (5)<br /> <br /> ADD e, R0<br /> <br /> (6)<br /> <br /> MOV R0, d<br /> <br /> Chæ thò thöù tö laø thöøa.<br /> Chaát löôïng maõ ñöôïc taïo ra, ñöôïc xaùc ñònh baèng toác ñoä cuûa maõ vaø kích<br /> thöôùc taäp maõ. Thí duï:<br /> MOV a, R0<br /> ADD # 1, R0<br /> MOV R0, a<br /> Caáp phaùt thanh ghi<br /> Söï löïa choïn cho vieäc ñaùnh giaù thöù töï<br /> <br /> 9.2. Maùy ñích<br /> Chuùng ta seõ duøng maùy ñích nhö laø maùy thanh ghi (register machine).<br /> Maùy ñích coù moãi töø goàm boán byte vaø coù n thanh ghi: R0, R1 … Rn-1, coù<br /> chæ thò hai ñòa chæ, vôùi daïng toång quaùt: op source, destination<br /> Thí duï moät soá chæ thò:<br /> MOV: chuyeån trò cuûa source ñeán destination<br /> ADD: coäng noäi dung source vaø destination<br /> SUB: tröø noäi dung source cho destination<br /> Mode ñòa chæ<br /> Thí duï:<br /> 1<br /> 2<br /> 3<br /> <br /> Mode<br /> Absolute<br /> Register<br /> indexed<br /> <br /> Daïng<br /> M<br /> R<br /> c (R)<br /> <br /> Ñòa chæ<br /> M<br /> R<br /> c + contents (R)<br /> <br /> Giaù<br /> 1<br /> 0<br /> 1<br /> <br /> 4<br /> 5<br /> 6<br /> <br /> indirect<br /> register<br /> inderect<br /> indexed<br /> literal<br /> <br /> *R<br /> <br /> contents (R)<br /> <br /> 0<br /> <br /> *c (R)<br /> <br /> contents (c + contents (R))<br /> <br /> 1<br /> <br /> #C<br /> <br /> haèng C<br /> <br /> 1<br /> <br /> Giaù chæ thò (instruction cost)<br /> Giaù chæ thò ñöôïc tính baèng moät coâng giaù keát hôïp trong baûng mode ñòa<br /> chæ nguoàn vaø ñích ôû treân.<br /> Qua caùc thí duï treân chuùng ta thaáy muoán sinh maõ toát thì laøm sao phaûi<br /> haï giaù cuûa caùc chæ thò.<br /> Sinh maõ ñeå quaûn lyù caùc baûn ghi hoaït ñoäng trong thôøi gian thöïc thi.<br /> Caùc maõ quaûn lyù naøy phaûi ñaùp öùng ñöôïc hai kyõ thuaät quaûn lyù boä nhôù<br /> tónh vaø caáp phaùt boä nhôù theo cô cheá stack.<br /> Vieäc caáp phaùt vaø giaûi toûa vò trí nhôù cho baûn ghi hoaït ñoäng laø moät phaàn<br /> trong chuoãi haønh vi goïi vaø trôû veà cuûa chöông trình con.<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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