一个关于URISC程序的编写问题
仅存在一条指令。这条唯一的指令有三个操作数,每个操作数均为一个存储单元地址,指令的功能是对前两个存储单元中的操作数做减法,将结果写入第二个操作数所指的存储单元中。如果减法的结果小于0,则发生跳转,执行第三个操作数所指向的存储单元中的指令,否则;继续执行后继指令。因为只有一条指令,所以不需要操作码,因此该指令的格式如下:
[L:] a, b, c ;mem[b] = mem[b] - mem[a],if (mem[b]< 0) goto c
其中,L为可选的标号,“;”后面是注释,此处实际上是对该指令功能的形式化描述。
尽管URISC只有一条指令,但是它是一种通用计算机,也就是说用这一条指令可以编写出实现任何复杂算法的程序。
例如,将地址为SRC的存储单元中的内容传送到地址为DEST的存储单元中。可以编写出如下程序:
START: DEST, DEST, ADD
ADD : SRC, TEMP, NEXT
NEXT: TEMP, DEST, CONT
CONT: ...
...
TEMP: WORD 0
其中,WORD是伪指令,用于将指定的内存单元初始化为指定的常数。
根据以上说明,完成如下:
1、 编写一段URISC程序,将a和b相加,结果写入a中,b保持不变。
2、 编写一段URISC程序,将a和b相乘,结果写入c中。约定存储单元one包含常数1,a和b均大于0,并且a和b可以被程序修改。
求助啊,连给的例子都不太看得懂...求教大牛。
参考:http://en.