ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:54.50KB ,
资源ID:3226082      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3226082.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(四元式序列转换虚拟机目标代码.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

四元式序列转换虚拟机目标代码.doc

1、四元式序列转换虚拟机目标代码一、实验目的1、熟悉和掌握四元式序列转换成目标代码的原理2、设计一个程序,能使给定的任一四元式转换成虚拟目标代码。二、实验步骤1、需求分析(1)、产生四元式序列翻译方案设计对于产生四元式序列的翻译方案的设计,以下面的作为例子关于赋值语句的四元式序列的翻译方案S:=id=Ep:=lookup(id.name);if pNULL then genquad(:,E.place,*p.place)else errorE:=E1+E2E.place:=newtemp;Fenquad(+, E 1 .place, E2 .place,E.place)E:= E1 * E2 E.

2、place:=newtemp;Fenquad(*, E 1 .place, E2 .place,E.place)E:= - E1 E.place:=newtemp;Genquad(NEG, E 1.place,E.place)E:=( E1)E.place:= E1 .placeE:=idp:=lookup(id.name);if pNULL then E.place:=*p.placeelse error其中,过程 genquad(op,x,y,z)功能是生成四元式:op x y z(2)、四元式生成目标代码从四元式序列生成目标代码的工作的主要问题是运算分量与计算结果的存取问题,在生成目标指

3、令时,要考虑四元式中运算分量是在寄存器中还是在内存中。当在寄存器中时,以后还会被使用否,等等。例如,对于四元式- x y z如果 x 和 y 都不在寄存器中,则可生成下列目标指令:MOV x, RiSUB y, Ri计算结果 z 在寄存器 Ri 中。如果寄存器 Ri 与寄存器 Rj 分别包含 x 与 y。及 x 与 y 的值分别在寄存器 Ri 与 Rj, 且此四元式后不再引用 x,可以为其生成目标指令:SUB Rj , Ri计算结果 z 在 Ri 中。如果寄存器 Ri 包含 x 而 y 在内存单元,且此四元式后不再以用 x,可以生成目标指令:SUB y, Ri或者MOV y, RjSUB Rj

4、 , Ri计算结果 z 仍然在 Ri 中 所以,生成目标代码时应考察四元式及其上下文。针对具体情况生成合适的目标指令3、程序的源程序(1)、source.cpp#include#include#include#include#include“source.h“void change_to_source(ofstream ptemp,char*s,DLNode*dl,struct four *temp,int char karray4=“+“,“-“,“ “,“-“,“*“,“/“,“ “,“,“=“,“:=“,“,“goto“,“itof“,“return“,“call“;struct fou

5、rchar item44;struct four*next;void init_array0(char ay4,int length);void init_four(struct four *head)*head=new struct four();(*head)-next=NULL;init_array0(*head)-item,4);void add_four(struct four*fr,char parray4,int length) struct four*temp=(*fr);struct four*t;while(temp-next!=NULL)temp=temp-next;t=

6、new struct four();t-next=NULL;for(int i=0;iitemi,parrayi);temp-next=t;int change_style(char* item)for(int i=0;inext!=NULL) /char karray3=“+“,“-“,“ “,“-“,“*“,“/“,“ “,“,“=“,“:=“,“next-item0);if(i=-1)break;elsechange_to_source(ptemp,s,dl,temp,Rcount,item1,item2,i);(*temp)=(*temp)-next;void output(struc

7、t four*head) struct four*temp=head;while(temp-next!=NULL) for(int i=0;inext-iteminext;void main()FILE*fp=fopen(“four.txt“,“r“);ofstream tempp(“temp.txt“);FILE*fp2=fopen(“result.txt“,“a+“);struct four*head=new struct four();init_four(DLNode*head2;ListInitiate(get_from(fp,head);output(head);convertor(

8、tempp,/_itoaif(fp=NULL) coutnext-item1next-item2next-item3);elseDLNode *p=dl;init_array1(item1,4);while(p-prior!=dl)if(strcmp(temp-next-item1,p-prior-destion)!=0)p=p-prior;elsestrcpy(item1,p-prior-source);break;p=dl;init_array1(item2,4);while(p-prior!=dl)if(strcmp(temp-next-item2,p-prior-destion)!=0

9、)p=p-prior;elsestrcpy(item2,p-prior-source);break;if(item10!=0)if(item20!=0)/ptempnext-item2next-item1next-item1next-item2next-item3);change(s,R,Rcount);ListInsert(dl,s,temp-next-item3);(2)、source.h#include#includestruct node char source4;char destion4;struct node *next;struct node *prior;typedef st

10、ruct node DLNode;int ListInitiate(DLNode*head)*head=new DLNode();if(*head)=NULL)return 0;(*head)-prior=*head;(*head)-next=*head;return 1;int ListInsert(DLNode*head,char s,char d)DLNode*p,*s0;p=head-next ;while(p-next!=head)p=p-next;s0=new DLNode();if(s=NULL)return 0;strcpy(s0-source,s);strcpy(s0-des

11、tion,d);s0-prior=p-prior;p-prior-next=s0;s0-next=p;p-prior=s0;return 1;bool empty(DLNode*head)if(head-next=head)return true;return false;/int ListDelete(void ListOutput(DLNode*head) DLNode*temp=head;while(temp-next!=head)coutnext-sourcenext-destionnext;(3)、输入的四元式+ a b t1+ a c t2- c d t4+ t1 t2 t3* d e t5/ t2 t3 t5- t1 t4 t6- e f t7: = a b(4)、运行产生的结果mov a , R0add b , R0mov a , R1add c , R1mov c , R2sub d , R2add R0 , R1mov d , R3mpy e , R3div R1 , R2sub R0 , R2mov e , R4sub f , R4mov a , R5cj= b , R5

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。