由于在写计组实验时,需要首先将mips语句转换为二进制机器码,在没有编译器的辅助之下,只能一句一句对着码表,手动编译二进制机器码。一个不小心就会出错,出错了还很难找出错误的地方,有时还需要重新编译一遍。
因此,决定用c++实现一个简易的mips编译器,能编译基本的需要的mips语句为32位字长的二进制机器码。
首先,我们需要将mips指令编写在文本文件txt里面,如下图,采用的是我的另一篇博客(多周期cpu设计与实现)里的mips指令。
之后我们要将mips指令读入到c++文件中,并进行字符串的解析,从而进行译码。
int main() {
int binary[32][32];
ifstream fin;
fin.open("mips.txt", ios_base::in);
if(!fin) {
cerr << "Open Error!" << endl;
exit(1);
}
int i, j;
char buffer[256];
char* q = NULL;
char* op;
string oop;
for(i = 0;i < 32;i++) {
for(j = 0; j < 32; j++) {
binary[i][j] = 0;
}
}
j = 0;
while(!fin.eof()) {
fin.getline(buffer, 100);
if(buffer[0] != 0)