It clears (makes zero) the sign bit, bit 31. All the other bits stay the same.
Here are three instructions that move data between registers inside the processor:
Instruction | Operation |
---|---|
mov.s fd, fs | copy 32 bits from float register $fs to float register $fd |
mtc1 rs, fd | move to coprocessor 1 copy 32 bits from general register $rs to float register $fd. No data conversion is done. Note: the source register is $rs and the destination register is $fd, the reverse of the usual order. |
mfc1 rd, fs | move from coprocessor 1 copy 32 bits from float register $fs to general register $rd. No data conversion is done. |
These instructions merely copy bit patterns between registers.
The pattern is not altered.
With the mfc1
instruction,
the contents of a floating point register is copied "as is"
to a general purpose register.
So a complicated calculation with integers can use float registers
for intermediate results.
And a complicated calculation with floats can use general purpose resisters
the same way.