【发布时间】:2014-01-24 09:30:59
【问题描述】:
我有这段用 C 语言编写的代码,我想将其转换为 MIPS 程序集,我尝试使用提供 .s 文件的编译器,但这对我来说似乎是胡言乱语。有人可以提供一些帮助,因为我对 MIPS 组装一无所知。
我的代码是 Collatz 猜想。我的 C 编程不是很好,因为到目前为止我只学过 Java。提前致谢
#include<stdio.h>
int main()
{
int n;
printf("Enter an integer\n");
scanf("%d", &n);
while (n != 1)
{
if(n == 1)
{
printf("N == 1");
}
else if((n%2)==0)
{
printf("Integer is even : %d\n", n);
n = n/2;
}
else
{
n = 3*n + 1;
printf("Integer has been multipled by 3 and added by 1 : %d\n", n);
}
}
}
【问题讨论】:
-
快速评论 -
if(n == 1) {printf("N == 1"); }永远无法执行,因为您的 while 条件会阻止它。 -
哦,是的,谢谢!完全错过了!
-
请考虑此代码在翻译为
asm时将包含对 C 标准库的引用。尝试以更简单的形式重写它作为开始。您还使用了哪些命令行选项? -
不要使用制表符,因为它会破坏缩进,在这里和其他地方。
-
要获得更干净的 ASM:制定一个从
main()调用的例程,并忽略printf()的。然后显示这个例程的 ASM,不会太多。考虑到this,解释起来并不难。