150 likes | 238 Views
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. Announcements. Quiz 2
E N D
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
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
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
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
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
Addition of Unsigned Numbers • Addition 0 0 1 1 3 + 0 0 1 0 +2 --------------------- 0 1 0 1 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
Subtraction of Unsigned Numbers • Subtraction 0 0 1 1 3 - 0 0 1 0 -2 --------------------- 0 0 0 1 1 • What happens when • You subtract greater number from smaller number • Need –ve numbers
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 • 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 1-bit sign 31-bit magnitude
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 = 0ten0000 0000 0000 0000 0000 0000 0000 0001two = + 1ten0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten... 0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646ten0111 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,647ten1000 0000 0000 0000 0000 0000 0000 0010two = – 2,147,483,646ten... 1111 1111 1111 1111 1111 1111 1111 1101two = – 3ten1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten1111 1111 1111 1111 1111 1111 1111 1111two = – 1ten
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
Add 2’s Complement Numbers 1 1 0 1 1 1 + 0 1 1 0 1 1 0 1 • Just like unsigned numbers 7 + 6 = 13 -4 + -5 = -9 0 0 0 1 1 1 1 0 0 1 1 + 0 1 1 1 0 1 1 1
Subtract 2’s Complement Numbers 0 0 1 1 1 1 0 0 - + 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 - + 0 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 • A – B = A + (-B) = A + (!B + 1) • Just like unsigned numbers 6 – 7 = 6 + (~7 + 1) = -1 -3 – 5 = -3 + (~(5)+1) = -8 0 0 0 1 1 1 1 1 0 1 1 1
Overflow 0 0 1 1 1 1 1 1 + - 1 0 0 1 0 1 1 1 0 1 0 0 • When result of operation too large to fit in 32-bits 7 – (-13) = 20 • 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 ? 0 0 1 0 1
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, subunote: addiu still sign-extends!note: sltu, sltiu for unsigned comparisons
Yoda says… • Luke: I can’t believe it. • Yoda: That is why you fail