MIPS程序集理解读取系统调用
我无法理解MIPS中的一段代码。即使用“读取”linux系统调用的寄存器约定:MIPS程序集理解读取系统调用,mips,Mips,我无法理解MIPS中的一段代码。即使用“读取”linux系统调用的寄存器约定: ... move a0,zero #a0 = 0 move a1,s0 #a1 = some adress in memory li v0,4003 #v0 = 4003 = SYSCALL READ syscall bnez a3, label #What is in a3?? li v1,1 bne v0,v1 ... 现在我明白了 char buffer; int v0 = re
...
move a0,zero #a0 = 0
move a1,s0 #a1 = some adress in memory
li v0,4003 #v0 = 4003 = SYSCALL READ
syscall
bnez a3, label #What is in a3??
li v1,1
bne v0,v1
...
现在我明白了
char buffer;
int v0 = read(0, &buffer, 1);
????
我完全不明白的是,在这种情况下,reg a3的含义是什么?v0是read的返回值,但a3应该是参数,而不是ret值。是错误吗?它是一个布尔值,指示是否存在错误: 在一些体系结构上,寄存器用作布尔值(0 表示无错误,-1表示错误)发送信号 系统调用失败
Arch/ABI Instruction System Ret Ret Error
call # val val2
-------------------------------------------------------------
mips syscall v0 v0 v1 a3