130 likes | 249 Views
Arithmetic Ops. Register Arithmetic. add : add two registers add $ dest , $src1, $src2 sub : subtract src2 from src 1 sub $ dest , $src1, $src2. It's a Trap!. Add/Subtract trap on overflow Jump to special location in memory, look for instructions. Unsigned Arithmetic.
E N D
Register Arithmetic • add: add two registers add $dest, $src1, $src2 • sub: subtract src2 from src1 sub $dest, $src1, $src2
It's a Trap! • Add/Subtract trap on overflow • Jump to special location in memory, look for instructions
Unsigned Arithmetic • addu/subu: add/subtract two registers, ignore overflow! • Still can overflow, up to assembler/programmer to catch
Immediate Arithmetic • iversions take immediate: addi $dest, $src1, imdtaddiu$dest, $src1, imdt No subi… just addi with negative
Calculation • Assume register $8 has a value representing x, calculate 5x – 4 and store the answer in $9
Mult • mult: multiplymult $src1, $src2 • Answer placed in double register • hi / lo
Retrieval • hi / lo register are not addressable • Must move answer back to regular registers: • mflo: move from lomflo $dest Real hardware : must wait after mflo before next mult
Retrieval • mfhi: move from himfhi $dest • Special purpose only… you shouldn't need
Multu • multu: unsigned multiplication • mult : extends sign bit • multu : do not extend sign bit • mult never traps
Div • Division algorithm uses double sized register • Builds remainder in upper half, quotient in low • Use div, then mflo/mfhi:
SRA • sra: shift right arithmetic • Preserve sign bit sra $dest, $src1, shiftBits