以这种方式计算能力只能通过硬编码来实现吗?

时间:2014-02-19 01:01:07

标签: assembly mips

我必须编写一个计算3 ^ 14的程序(随着时间的推移打印每个功率值)。但是,我不能使用跳跃或分支。除非必要,否则我不会只是 mul 直到我达到14次方为止。

如果不对其进行硬编码,这是否可行(请记住,我们还没有深入到语言中)。我们知道跳转,简单的逻辑条件和分支(除此之外,语言的基础 - 添加,la,li,系统调用等。)

1 个答案:

答案 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。不幸的是,由于你的问题指定代码必须是线性的,没有跳转或分支,这是我能想到编写程序而不必手动输入每一行的唯一方法。