CS 230 Chapter 3 Arithmetic for Computers

advertisement
CS 230: Computer Organization
and Assembly Language
Aviral Shrivastava
Department of Computer Science and Engineering
School of Computing and Informatics
Arizona State University
Slides courtesy: Prof. Yann Hang Lee, ASU, Prof. Mary
Jane Irwin, PSU, Ande Carle, UCB
M
C L
Announcements
• Quiz 2
– Complete Chapter 2
• MIPS Assembly Language Programming, including function calls
– Thursday, Sept 24, 2009
• Project 2
– MIPS Assembly Language Programming, including function calls
– Will take a day or two to program
– Due tomorrow
M
C L
CSE 230 Road map
• So far
– Write any program in MIPS assembly
language
– Convert into binary instructions
• Today
– How are numbers represented
– How are they added, subtracted, multiplied
divided
M
C L
Numbers
• Bits are just bits (no inherent meaning)
– conventions define relationship between bits and numbers
• Unsigned Numbers
– 0 - 231
• Large Numbers
– Avogadro's number
• 6.0221415 × 1023 ~ 64 bits
• Signed Numbers
– How to represent –ve numbers
• Fractions
– How to represent
  3.14159265
M
C L
Unsigned Numbers
• Representation
(d31 d30 … d2 d1 d0)2 = d31*231 + d30*230 + … d2*22 + d1 * 21 + d0*20
0000 0000 0000 0000 0000 0000 0000 0000 = 010
0000 0000 0000 0000 0000 0000 0000 0001 = 110
0000 0000 0000 0000 0000 0000 0000 0010 = 210
.
.
.
.
.
.
.
.
. .
1111 1111 1111 1111 1111 1111 1111 1111 = 4,294,967,29510
• Minimum Number
= 0 = (0000….0000)2
• Maximum Number
= (1111….1111)2 = (1 0000….0000)2 – 1 = 232-1
32
M
C L
Addition of Unsigned Numbers
• Addition
0011
3
+0010
+2
--------------------0101
5
• What happens when
– Addition results in a number that does not fit in
32-bits
•232-1 + 232-1 = 2*232 – 2 = 233 -2 -- needs 33 bits
– Overflow
M
C L
Subtraction of Unsigned Numbers
• Subtraction
0011
3
-0010
-2
--------------------0001
1
• What happens when
– You subtract greater number from smaller
number
•Need –ve numbers
M
C L
Signed Numbers
• One simple strategy
– Sign Magnitude Representation
• Leftmost bit is sign bit
• Rest 31-bits are unsigned
– Representation
• (d31 d30 … d2 d1 d0)2 = (-1)*d31 + d30*230 + … d2*22 + d1 * 21 + d0*20
1-bit sign
31-bit magnitude
– Number Range = -(231-1), …,-1,-0, +0,+1, …, +(231-1)
• 2 zero’s
– How to find –ve of a number
• Just change the sign-bit
– Addition & Subtraction
• Add/Sub the 31-bits, and change the sign bit logically
• Need a seamless way to perform these very frequent operations
M
C L
2s Complement Representation
• Representation
• (d31 d30 … d2 d1 d0)2 = d31*(-2)31 + d30*230 + … d2*22 + d1 * 21 + d0*20
• Examples
0000 0000 0000 0000 0000 0000 0000 0000two = 0ten
0000 0000 0000 0000 0000 0000 0000 0001two = + 1ten
0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten
...
0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646ten
0111 1111 1111 1111 1111 1111 1111 1111two = + 2,147,483,647ten
1000 0000 0000 0000 0000 0000 0000 0000two = – 2,147,483,648ten
1000 0000 0000 0000 0000 0000 0000 0001two = – 2,147,483,647ten
1000 0000 0000 0000 0000 0000 0000 0010two = – 2,147,483,646ten
...
1111 1111 1111 1111 1111 1111 1111 1101two = – 3ten
1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten
1111 1111 1111 1111 1111 1111 1111 1111two = – 1ten
M
C L
Negate 2's Complement Number
• Negating a two's complement number: invert all bits and add 1
– remember: “negate” and “invert” are quite different!
• 0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten
• 1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten
• Converting n bit numbers into numbers with more than n bits:
– MIPS 16 bit immediate gets converted to 32 bits for arithmetic
• "sign extension"
– copy the most significant bit (the sign bit) into the other bits
0010
-> 0000 0010
1010
-> 1111 1010
M
C L
Add 2’s Complement Numbers
• Just like unsigned numbers
7 + 6 = 13
0
+ 0
0
1
0
0
1
1
1
1
1
1
1
0
1
0
1
-4 + -5 = -9
1
1
+ 1
1
1
1
0
1
0
1
0
1
1
0
1
1
M
C L
Subtract 2’s Complement Numbers
• A – B = A + (-B) = A + (!B + 1)
• Just like unsigned numbers
6 – 7 = 6 + (~7 + 1) = -1
0
- 0
1
0
0
1
1
1
1
1
1
1
0
1
1
0
+ 1
1
0
1
1
1
0
1
1
0
1
0
1
1
1
+ 1
1
1
1
1
1
0
0
0
1
0
1
1
0
-3 – 5 = -3 + (~(5)+1) = -8
1
- 0
1
1
0
1
1
1
0
0
0
0
1
1
0
M
C L
Overflow
• When result of operation too large to fit in 32-bits
7 – (-13) = 20
0
- 1
0
0
1
0
1
1
1
1
+
0
0
1
0
1
0
1
1
1
1
0
0
1
1
0
• Detect Overflows
–
–
–
–
Positive + Positive -> Negative
Negative + Negative -> Positive
Positive – Negative -> Negative
Negative – Positive -> Positive
• Consider the operations A + B, and A – B
– Can overflow occur if B is 0 ?
– Can overflow occur if A is 0 ?
M
C L
Effects of Overflow
• An exception (interrupt) occurs
– Control jumps to predefined address for exception
– Interrupted address is saved for possible resumption
• Details based on software system / language
– example: flight control vs. homework assignment
• Don't always want to detect overflow
– new MIPS instructions: addu, addiu, subu
note: addiu still sign-extends!
note: sltu, sltiu for unsigned comparisons
M
C L
Yoda says…
• Luke: I can’t believe it.
• Yoda: That is why you fail
M
C L
Download