我必须用mips汇编语言编写一个程序来读取txt文件并对其中的信息进行一些处理,问题是它必须使用像这样的cat fileName.txt这样的命令从unix控制台工作。 java -jar Mars4_3.jar programName.asm。 是不是cat命令打开并读取文件?要在程序集中打开一个文件,我需要在一个带有空终止字符的字符串中使用它的名字,这是一个错字还是我错过了什么?
答案 0 :(得分:1)
通过使用管道(|
),您可以将左侧命令中的 stdout 映射到第二个命令的 stdin 。
因此,您必须使用syscall
8来读取 stdin 。请注意,每次发出系统调用8时,都会读取一个完整的行(直到换行符),因此如果您的输入有多行,则必须一次读取一行。
此示例从输入读取一行到缓冲区,然后再次打印:
.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包含文本'This is a test!'):
cat fileName.txt | java -jar Mars4_3.jar programName.asm
Text: This is a test!