Do you have any simple ways to make a value in a register in MIPS as an absolute value?
+1
A:
The easiest way would just to do a bit of binary math on the values.
http://en.wikipedia.org/wiki/Signed_number_representations describes how various systems store their negative numbers. I believe MIPS uses a two's complement scheme to store signed numbers. This makes it a bit harder than a bit flag, which could just be turned off by ANDing the number with 0b01111111, but it is still doable.
David Pfeffer
2010-02-22 17:01:33
+1
A:
Here is a pretty simple way to do it.
#assume you want the absolute value of r1
ori $2, $zero, $1 #copy r1 into r2
slt $3, $1, $zero #is value < 0 ?
beq $3, $zero, foobar #if r1 is positive, skip next inst
sub $2, $zero, $1 #r2 = 0 - r1
foobar:
#r2 now contains the absolute value of r1
swanson
2010-02-22 17:10:55