我正在尝试写出与浮点寄存器有关的机器指令的MIPS二进制代码。但是,虽然我可以找到浮点指令的操作码,但我找不到哪些数字指的是哪些浮点寄存器。我的书和互联网可以告诉我,如果我想引用$t1,我会使用哪个号码寄存器,但我找不到任何关于如何引用$f1的信息。
发布于 2013-02-16 05:14:17
有32个浮点寄存器:$f0..$f31。但是每个浮点操作(在早期的MIPS处理器中)都是在单独的处理单元FPU (浮点单元)中完成的,所以你不能用普通的(整数)命令访问浮点寄存器。FPU寄存器用于FPU命令,CPU寄存器用于CPU命令。
有一个图片和透明的描述http://www.cim.mcgill.ca/~langer/273/12-coprocessors.pdf
对于协处理器1 (CP1)检查http://www.cs.sunysb.edu/~lw/spim/MIPSinstHex.pdf的第一页和最后一页,所有FPU命令都编码为协处理器指令
域ft(5) fs(5) fd(5)是寄存器的代码(都是5位宽)。$f0将编码为0;$f31编码为31 (十进制)或0x1f (十六进制)。对于双寄存器值(64位双格式),仅记录寄存器对中第一个寄存器的数量(仅允许偶数regnumber : 0,2 ..30)。
操作码的详细表格在此处:http://www.math.unipd.it/~sperduti/ARCHITETTURE-1/mips32.pdf (第A-73页)
https://stackoverflow.com/questions/14902712
复制相似问题