我必须用 mips 汇编语言编写一个程序来读取一个 txt 文件并使用其中的信息做一些工作,问题是它必须使用类似 cat fileName.txt | 的命令从 unix 控制台工作。java -jar Mars4_3.jar 程序名.asm。cat 不是打开和读取文件的命令吗?要在程序集中打开一个文件,我需要它的名称在一个带有空终止字符的字符串中,这是一个错字还是我遗漏了什么?
问问题
2308 次
1 回答
1
通过使用管道 ( ),您可以将左侧命令的标准输出|
映射到第二个命令的标准输入。因此,您必须使用8 从stdin读取。请注意,每次您发出系统调用 8 时,都会读取完整的一行(直到换行),因此如果您的输入多于一行,则必须一次读取一行。syscall
此示例从输入中读取一行到缓冲区,然后再次打印:
.data
msg: .asciiz "Text: "
buffer: .space 16384 # Buffer size
.text
li $v0, 8
la $a0, buffer
li $a1, 16384
syscall # Read text from stdin
li $v0, 4
la $a0, msg
syscall
la $a0, buffer # Print read texto from stdin
syscall
li $v0, 10 # exit
syscall
并像这样测试它(假设 fileName.txt 包含文本“这是一个测试!”):
cat fileName.txt | java -jar Mars4_3.jar programName.asm
Text: This is a test!
于 2013-06-13T16:10:40.930 回答