发一道题目,算编程题吧
存储单元R0,R1....Rn,....(可以无限的多)每个存储单元都可以存任意自然数(非负整数),
初始的时候除了事先设定的几个存储单元的数值,其他数值都为0
这机器的指令集有4条:
1.Ai对Ri加1
2.Si对Ri减1(0则依然为0)
3.EiC:当Ri!=0跳转到第C条指令,否则下条指令
4.S:停机
现在写一个程序,计算R0=R0*R1 另外,这个机器有个名字,unlimited register machine(URM) 0s2
1E20 r2清0
2s3
3E32 r3清0
4 a2
5 s0
6 a3
7 E04
8 s3
9 a0
10 E38
11 s1
12 E14
13 S
太累了 不好意思,算成了r2=r0*r1 :em17: :em17: :em17: ........真正有意思的问题,却很少人回帖子........
哎,或许每个人最关心的还是钱袋里装了多少钱吧..........
[ 本帖最后由 cjaizss 于 2009-5-16 02:29 编辑 ] 原帖由 cjaizss 于 2009-5-16 02:28 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
........真正有意思的问题,却很少人回帖子........
哎,或许每个人最关心的还是钱袋里装了多少钱吧..........
哎,学计算机学到现在,都还没把那本“编译原理”的书给认真的看一篇。
计算机的每个方面都够你搞的,
终归精力有限,并且又不是天才,
所以,大部分情况下,我们只需知道编译器是干什么的以及如何使用,而无需知道编译器是怎开发的。 整天忙着糊口,没时间研究 :( :( :( 1 S0
2 A2
3 A3
4 S1
5 E12
6 A1
7 S3
8 E36
9 E01
10 S2
11 A0
12 E210
13 S #include <stdio.h>
int a0=8;
int a1=7;
int a2=0;
int a3=0;
int main(){
go1:
a0--;
go2:
a2++;
a3++;
a1--;
if(a1>0)
goto go2;
go6:
a1++;
a3--;
if(a3>0)
goto go6;
if(a0>0)
goto go1;
go10:
a2--;
a0++;
if(a2>0)
goto go10;
printf("a0*a1=%d\n",a0);
return 0;
} 原帖由 nicolas.shen 于 2009-5-16 13:08 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
整天忙着糊口,没时间研究 :( :( :(
:)
页:
[1]
2