HL.REMU¶
说明¶
求无符号数余数(Remainder, Unsigned)
无符号计算左源操作数除以右源操作数,向 0 舍入,余数写入第一个目的寄存器,商数写入第二个目的寄存器中。
汇编语法¶
汇编符号¶
- SrcL:左源寄存器,可以索引全局寄存器R0-R23和前序1-4条输出至T队列或U队列的指令结果。
- SrcR:右源寄存器,可以索引全局寄存器R0-R23和前序1-4条输出至T队列或U队列的指令结果。
- ->:用于指示目的寄存器。
- Dst0:第一个目的寄存器,可以索引块内T队列和U队列寄存器或者全局寄存器R1-R23。
- Dst1:第二个目的寄存器,可以索引块内T队列和U队列寄存器或者全局寄存器R1-R23。
编码格式¶
- 低16bit编码:
- 高32bit编码:
执行方式:¶
integer d0 = UInt(RegDst0);
integer d1 = UInt(RegDst1);
integer m = UInt(SrcL);
integer n = UInt(SrcR);
bits(64) operand1 = R[m, 64];
bits(64) operand2 = R[n, 64];
bits(64) quotient, remainder;
if operand2 != 0 then
remainder = operand1 %(u) operand2;
quotient = operand1 /(u) operand2;
else
remainder = operand1;
quotient = 2^64 - 1;
R[d0, 64] = remainder;
R[d1, 64] = quotient;
汇编索引模式¶
输入输出可选组合如下:
| 输入组合 | 输出组合 |
|---|---|
| a1, a2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
| a1, t#2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
| a1, u#2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
| t#1, a2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
| t#1, t#2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
| t#1, u#2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
| u#1, a2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
| u#1, t#2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
| u#1, u#2 | t, t;t, u;t, a3;u, t;u, u;u, a3;a3, t;a3, u;a3, a4 |
注意事项¶
如果出现除以零的情况,余数等于被除数,且不会触发异常。
备注¶
本指令属于增强指令扩展,可用于任意类型的块指令块体中。