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