Scanf采用MIPS汇编语言?

时间:2014-03-24 22:57:18

标签: c mips

我理解MIPS的基本功能,但是我不明白如何声明变量,特别是不明白如何在MIPS中编写等效的scanf()/ printf()(当在线时找不到任何关于它们的信息)我搜索)。这是我现在要翻译的代码:

#include <stdio>
int main(int argc, char* argv[]) 
{ 
 unsigned long int n; 
 scanf("%d", &n); 
 printf("%lu",fact(n)); 
}

任何指导?

2 个答案:

答案 0 :(得分:0)

您可能想要在程序集中重新实现scanf。使用C语言或其他高级语言实现效率更高。更好的方法是获取开源实现,比如glibc。

以下是glibc:http://fossies.org/dox/glibc-2.19/scanf_8c_source.html

中scanf()的源代码

以下是类似GPL的实现:http://mirror.fsf.org/pmon2000/3.x/src/lib/libc/scanf.c

答案 1 :(得分:0)

您可能正在寻找MIPS模拟器系统调用(系统调用)。以下是SPIM syscallsMARS syscalls

系统调用7被读取为double,大致相当于scanf("%d", &n)

系统调用1是打印整数,相当于printf("%u",n)

li   $v0, 1    # service 1 is print integer
move $a0, $t0  # move register to be printed into argument register $a0
syscall