📄 73.cpp
字号:
//7.3 从四元式到汇编语言的翻译
#include <stdio.h>
#include <iostream.h>
#include <fstream.h>
#include <string.h>
void main()
{
ifstream cinq("Quad.txt",ios::in); //文件Quad.txt存放源程序的四元式
ofstream cout("Asm.txt",ios::out); //文件Asm.txt存放汇编语言目标程序
char op[10];
unsigned short arg1,arg2,result;
unsigned short c1,c2,c3;
unsigned short d1,d2,d3;
while(cinq>>op>>arg1>>arg2>>result){ //读入四元式
c1=arg1/256,d1=arg1%256;
c2=arg2/256,d2=arg2%256;
c3=result/256,d3=result%256;
//ARG1送R0
cout<<"Load R3,"<<d1<<endl;
cout<<"Load R0,"<<c1<<"[R3]"<<endl;
if(c1==252||c1==253) { // ARG1是变量
cout<<"Load R0,@R0"<<endl;
}
//一元正运算,无需处理ARG2。
if(!strcmp(op,"+")&& !arg2){;}
//一元负运算
if(!strcmp(op,"-") && !arg2){
cout<<"Load R3,R0"<<endl; // -ARG1=0-ARG1,将ARG1送R3。
cout<<"Load R0,0"<<endl; //将0送R0
cout<<"Sub R0,R3"<<endl; //R0-ARG1送R0
}
//加法运算(Add R0,ARG2)
if(!strcmp(op,"+") && arg2){
cout<<"Load R3,"<<d2<<endl;
if(c2==252||c2==253){ //ARG2是变量
cout<<"Load R3,"<<c2<<"[R3]"<<endl;
cout<<"Add R0,@R3"<<endl;
}
else { //ARG2是常数
cout<<"Add R0,"<<c2<<"[R3]"<<endl;
}
}
//赋值运算,无需处理ARG2。
if(!strcmp(op,"=")){;}
//………………………………………
//R0送RESULT
cout<<"Load R3,"<<d3<<endl;
cout<<"Load R3,"<<c3<<"[R3]"<<endl;
cout<<"store R0,@R3"<<endl<<endl;
}//while
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -