前言
怎么说呢?名字还没想好,就求求各位大佬取取名,找找缺陷,就这样吧
具体内容
指令集:
指令 参数 说明
[X] 返回第X位的储存单元或其他变量X
(T-X-Y)
mov: T-X-Y 以Y为参数的T形式操作存储单元X
(若都不是默认为赋值)
jump: X 跳转到第X行指令
epual: X-Y 若X等于0,执行第Y行的指令
Nout: X 以数字形式输出存储单元X
Cout: X 以字符形式输出存储单元X
sign: X-Y 设置标记X为第Y行的指令(参数也将一同载入)
ena: X 启用X标记的指令
end; 结束系统变量:
Q 当前指令行
A or B or C 标记存储变量a-z 表示存储单元
1-26 同上,并且以a=1,b=2,c=3...Y=25,z=26的形式对应具体格式:
一般指令
指令:参数表;
存储单元调用指令:
[存储编号]
结束指令
end;(照抄就行)参数T的可选项:
set 赋值
add 加
cut 减
rid 乘
exp 除
sqrt开方(向下取整)
pow 开方
and 逻辑与
or 逻辑或
xor 逻辑异或注意事项:
1.对于不存在的指令,我们以结束语句(end)来处理;
2.对于不存在的存储;
3.参数表中每一个参数都要用一个减号(-)来分隔;
灵感来源
@洛谷的远古计算机
当时也不到怎么想的,脑袋Duang!的一下就与写了一套这样的指令集,后面开始编写编译器的时候就...(你懂得)
编译器当前进度:
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
string code[100001];
int len_x[100001],len_y,a[30],q=0;
void coder_Y(int &y)
{
string s="";
int i=0;
while(code[y][i]!=':')
{
s=s+code[y][i];
i++;
}
i++;
if(s=="mov")
{
}
else if(s=="jump")
{
}
else if(s=="epual")
{
}
}
void coder()
{
for(int i=1;i<=len_y;i++)
{
coder_Y(i);
}
}
int main()
{
while(true)
{
string s;
getline(cin,s);
if(s=="over")
{
break;
}
else
{
len_y++;
code[len_y]=s;
}
}
coder();
}
还是没编完[笑死]
然后呢我先尝试编写也一个程序:
mov:set-72-a;
Cout:a;
mov:set-101-a;
Cout:a;
mov:set-108-a
Cout:a;
Cout:a;
mov:set-111-a;
Cout:a;
经过了一番脑力操作了以后,确定了输出为“Hello”
结尾
就请各位大佬看看吧,编译器还在肝...
END