3

我正在尝试为与浮点寄存器有关的机器指令编写 MIPS 二进制代码。但是,虽然我可以找到浮点指令的操作码,但我无法找出哪些数字指的是哪些浮点寄存器。我的书和互联网可以告诉我,如果我想引用 $t1,我会使用哪个号码寄存器,但我找不到任何关于如何引用 $f1 的信息。

4

1 回答 1

3

有 32 个浮点寄存器:$f0... $f31但是每个浮点运算(在早期的 MIPS 处理器中)都是在单独的处理单元 FPU(浮点单元)中完成的,因此您无法使用普通(整数)命令访问浮点寄存器。FPU 命令的 FPU 寄存器和 CPU 命令的 CPU 寄存器。

有图有透说明 http://www.cim.mcgill.ca/~langer/273/12-coprocessors.pdf

所有 FPU 命令都编码为协处理器指令,用于协处理器 1 (CP1) 检查http://www.cs.sunysb.edu/~lw/spim/MIPSinstHex.pdf的第一页和最后一页

字段 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页)

于 2013-02-15T21:14:16.967 回答