我必须编写一个计算3 ^ 14的程序(随着时间的推移打印每个功率值)。但是,我不能使用跳跃或分支。除非必要,否则我不会只是 mul 直到我达到14次方为止。
如果不对其进行硬编码,这是否可行(请记住,我们还没有深入到语言中)。我们知道跳转,简单的逻辑条件和分支(除此之外,语言的基础 - 添加,la,li,系统调用等。)
答案 0 :(得分:-1)
您可以编写程序来编写“硬编码”程序。对于c打印输出c:
printf("int x = 3;\n");
for (i = 2; i <=14; i++) {
printf("x = x * 3;\n");
printf("printf(\"next power = %%d\\n\", x);\n");
}
这将输出类似这样的内容(截断):
int x = 3;
x = x * 3;
printf("next power = %d\n", x);
x = x * 3;
printf("next power = %d\n", x);
x = x * 3;
printf("next power = %d\n", x);
x = x * 3;
然后可以将此代码编译为运行,并将输出(再次,截断):
next power = 9
next power = 27
next power = 81
next power = 243
next power = 729
next power = 2187
next power = 6561
您显然需要将此转换为MIPS。不幸的是,由于你的问题指定代码必须是线性的,没有跳转或分支,这是我能想到编写程序而不必手动输入每一行的唯一方法。