⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 73.cpp

📁 目标代码生成
💻 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 + -