Thông tin tài liệu:
Bài giảng Chương trình dịch - bài giảng 9 trình bày về sinh mã. Các nội dung chính được trình bày trong chương này gồm có: Chương trình đích, máy tính ảo, một bộ sinh mã đơn giản, bản diễn tả thông tin thanh ghi và địa chỉ, thuật toán sinh mã,... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Chương trình dịch: Bài giảng 9 - Nguyễn Phương Thái NguyễnPhươngTháiBộmônKhoahọcMáytínhhttp://www.coltech.vnu.vn/~thainp/Nội dungChươngtrìnhđíchMáytínhảoSinhmãChương trình đíchNgônngữmáytuyệtđối: Cóthểđượcđặttrongmộtvịtrícốđịnhcủabộnhớvà thựcthingayđược Ưuđiểm:Chươngtrìnhnhỏvàchạynhanh.Ngônngữmáyđịnhvị: Chophépbiêndịchriêngrẽcácchươngtrìnhcon,sauđó đượcliênkếtlạivớinhauvàđượctảivàođểthựcthinhờ mộtcôngcụtảivàliênkết(linkingloader). Ưuđiểm:Cácmôđunchươngtrìnhđộclậpvàcódịchđộc lập,sauđókếthợpvớinhauthànhmộtchươngtrìnhđối tượnghoànchỉnhnhờviệcliênkếtvànạp.Chương trình đích (tiếp)Mãthôngdịch: Chuỗihoạtđộngcủanóđượcbiểudiễnkhôngphảibằngcác chỉthịlệnhmáyhoạtđộngtrựctiếpmàbằngcáccâulệnh thôngdịchtrừutượngởmộtdạngmãhoánàođó. Chươngtrìnhbiêndịchtrongtrườnghợpnàysẽchuyển chươngtrìnhnguồnthànhmộtchươngtrìnhvớicáclệnhảo này. Chươngtrìnhđíchnàysauđósẽđượchoạtđộngnhờvàomột chươngtrìnhthôngdịch. Ưuđiểm:Dễviếtchươngtrìnhdịch,cóthểchạytrênnhiều nềntảngphầncứngvàhệđiềuhành. Nhượcđiểm:ChậmhơnmãmáytuyệtđốinhiềulầnMáy đíchĐểthiếtkếmộtbộsinhmã,chúngtaphảithônghiểu vềmáyđíchvàtậpchỉthịcủanó.Đểđơngiản,chúngtasẽdùngmộtmáyảolàmmáy đích.Máy tính ảoTêngọi:VIMChỉcóhaithanhghicùngvớibộnhớvàngănxếpBộnhớchươngtrìnhvàbộnhớdữliệunằmtáchrời nhauMọichỉthịchiếmmộtôtrongbộnhớchươngtrình chươngtrình(địachỉcácôlệnhnàylàcácsốtựnhiên)Mộtthanhghilàcontrỏchỉthịiccóchứađịachỉcủa lệnhsẽđượcthựchiện.Đỉnhngănxếpđượcchỉbằng thanhghithứhaisp.Máy tính ảo (tiếp)CấutrúcmáytínhVIMbaogồmhaithanhghiic,spvà bộnhớchiathànhbavùngngănxếp(stack),bộnhớdữ liệu(data),bộnhớchươngtrình(prog) sp stack data ic progMáy tính ảo (tiếp)Cácchỉthịbaogồmmộttoántửvànhiềunhấtmộttham số(cóthểlàmộtsốhoặcmộtđịachỉtrongbộnhớ chươngtrìnhhoặcdữliệu)Cáctoántửsốhọcvàquanhệkhôngcóthamsố.Chúng thựchiệntrênmộthoặchaigiátrị(toánhạng)đangnằm trênđỉnhngănxếpsốhọc(gọitắtlàngănxếp).Cáctoán hạngnàysẽđượcthaythếbằngkếtquảthuđượcnhờ ápdụngphéptoánchocáctoánhạngđó.Máy tính ảo (tiếp)Cácchỉthịnạp(load)vàlưu(store),nhẩy(jump)đềucó mộtthamsốLệnhnạp:saochépdữliệucủamộtbiếnnằmtrongbộ nhớdữliệuvàođỉnhcủangănxếpLệnhlưu:loạibỏgiátrịtrênđỉnhcủangănxếpvàđưa nóvàobộnhớdữliệuCácchỉthịvàora:khôngcóthamsố,lệnhvàođọcmột giátrịtừbànphímvàlưunóvàotrongngănxếp,lệnhra loạibỏgiátrịđangởđỉnhngănxếpvàghinóramàn hìnhMáy tính ảo (tiếp)câulệnhtrongngônngữnguồnSLANG“a:=b+c”,với a,blàbiếnvàclàhằngsốsẽđượcchuyểnsangmãmáyVIMnhưsau: ldvarb ldconc add stvaraGiảsửgiátrịbvàcbanđầulà37và2thìquátrìnhthực hiệntrênngănxếpnhưsau:Máy tính ảo (tiếp)Cácchỉthịlệnhcủamáyđíchchiathànhcácloại: loadandstore cácchỉthịsốhọcvàlogic cácchỉthịsosánh chỉthịkhôngcóđiềukiện cácchỉthịnhảycóđiềukiện cácchỉthịvàoraMáy tính ảo (tiếp) chỉthịNạpvàLưuldconintval nạpgiátrịsốnguyênintvalvàongănxếpldvaraddress saochépgiátrịsốnguyêntừđịachỉbộnhớaddressvào ngănxếpstvaraddress loạibỏgiátrịsốnguyênởđỉnhngănxếpvàghinóvào địachỉbộnhớaddress chỉthịPhéptoánsốhọchaingôiadd cộnghaisốnguyênsub trừhaisốnguyênmul nhânhaisốnguyênMáy tính ảo (tiếp) dvi lấythươngcủahaisốnguyên mdl lấyphầndưcủahaisốnguyên chỉthịPhéptoánsốhọcmộtngôi neg lưugiátrịsốnguyêndạng–intvalvàongănxếp abs lưugiátrịtuyệtđốicủaintvalvàongănxếp chỉthịPhépsosánh eq bằng(=) ne khác() lt béhơn(=)Máy tính ảo (tiếp) chỉthịNhảyjumpaddress nhảytớiđịachỉaddressmàkhôngcầnđiềukiệnjiftaddress loạibỏgiátrịchânlý(gọilàtruthval)rakhỏingănxếp;nếugiátrị dólàtruethìnhảytớiđịachỉaddress,cònnếutráilạithìchỉthịtiếp theosẽđượcthựchiệnjiffaddress loạibỏgiátrịchânlý(gọilàtruthval)rakhỏingănxếp;nếugiátrị dólàfalsethìnhảytớiđịachỉaddress,cònnếutráilạithìchỉthịtiếp theosẽđượcthựchiện chỉthị ...