cjaizss 发表于 2009-05-14 16:37

发一道题目,算编程题吧

存储单元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

cjaizss 发表于 2009-05-14 16:43

另外,这个机器有个名字,unlimited register machine(URM)

nicolas.shen 发表于 2009-05-14 21:56

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
太累了

nicolas.shen 发表于 2009-05-15 09:08

不好意思,算成了r2=r0*r1 :em17: :em17: :em17:

cjaizss 发表于 2009-05-16 02:28

........真正有意思的问题,却很少人回帖子........
哎,或许每个人最关心的还是钱袋里装了多少钱吧..........

[ 本帖最后由 cjaizss 于 2009-5-16 02:29 编辑 ]

disheng727 发表于 2009-05-16 11:33

原帖由 cjaizss 于 2009-5-16 02:28 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
........真正有意思的问题,却很少人回帖子........
哎,或许每个人最关心的还是钱袋里装了多少钱吧..........
哎,学计算机学到现在,都还没把那本“编译原理”的书给认真的看一篇。
计算机的每个方面都够你搞的,
终归精力有限,并且又不是天才,
所以,大部分情况下,我们只需知道编译器是干什么的以及如何使用,而无需知道编译器是怎开发的。

nicolas.shen 发表于 2009-05-16 13:08

整天忙着糊口,没时间研究 :( :( :(

goter 发表于 2009-05-16 15:13

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

goter 发表于 2009-05-16 15:23

#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;
}

system888net 发表于 2009-05-19 21:34

原帖由 nicolas.shen 于 2009-5-16 13:08 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
整天忙着糊口,没时间研究 :( :( :(
:)
页: [1] 2
查看完整版本: 发一道题目,算编程题吧