Data Representations, Memory and Bit Operations

Data Representations, Memory and Bit Operations

Under the Hood: Data Representations, Memory and Bit Operations Computer Science 104 Lecture 3 Admin Homework #1 • Due Feb 6 Reading • Finish Chapter 1 • Start Chapter 2 TAs • +1 UTA: Michael Zhou • Lindsay is Head TA • Office Hours Posted − See Piazza or course webpage © Alvin R. Lebeck / Andrew Hilton CPS 104 2 Last time …… Who can remind us what we covered last time? © Alvin R. Lebeck / Andrew Hilton CPS 104 3 Last time …… Who can remind us what we covered last time? • Representing positive and negative integer − Sign Magnitude − 1’s Complement − 2’s Complement • 2’s Complement math − Addition, subtraction, negation • Representing “real” numbers − Fixed Point − Rational − IEE Floating Point • Characters/strings © Alvin R. Lebeck / Andrew Hilton CPS 104 4 Computer Memory Where do we put these numbers? • Registers [more on these later] • Memory © Alvin R. Lebeck / Andrew Hilton CPS 104 5 Computer Memory Where do we put these numbers? • Registers [more on these later] − In the processor − Compute directly on them − Few of them (~16 or 32) • Memory © Alvin R. Lebeck / Andrew Hilton CPS 104 6 Computer Memory Where do we put these numbers? • Registers [more on these later] − In the processor − Compute directly on them − Few of them (~16 or 32) • Memory [Our focus now] − External to processor − Load/store values to/from registers − Very large (multiple GB) © Alvin R. Lebeck / Andrew Hilton CPS 104 7 Memory Organization Memory: billions of numbers…how to get the right one? • We number our numbers! • Each memory location has an address • Processor asks to read or write specific address − Memory, please load address 0x123400 − Memory, please write 0xFE into address 0x8765000 • Kind of like a giant array © Alvin R. Lebeck / Andrew Hilton CPS 104 8 Memory Organization Memory: billions of numbers…how to get the right one? • We number our numbers! • Each memory location has an address • Processor asks to read or write specific address − Memory, please load address 0x123400 − Memory, please write 0xFE into address 0x8765000 • Kind of like a giant array − Array of what? − Bytes? − 32-bit ints? − 64-bit ints? © Alvin R. Lebeck / Andrew Hilton CPS 104 9 Memory Organization Most systems: byte (8-bit) addressed • Memory is “array of bytes” − Each address specifies 1 byte • Support to load/store 16, 32, 64 bit quantities − Byte ordering varies from system to system Some systems “word addressed” • Memory is “array of words” − Word is “int” − Smaller operations “faked” in processor • Not very common © Alvin R. Lebeck / Andrew Hilton CPS 104 10 Word of the Day: Endianess Byte Order Big Endian: byte 0 is 8 most significant bits IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA Little Endian: byte 0 is 8 least significant bits Intel 80x86, DEC Vax, DEC Alpha little endian byte 0 3 2 1 0 msb lsb (most significant bit) (least significant bit) 0 1 2 3 big endian byte 0 © Alvin R. Lebeck / Andrew Hilton CPS 104 11 Endianess Example: 12 as 32-bit int at address 0x1234: Address Little Big Endian Endian 0x1237 0x00 0x0C 0x1236 0x00 0x00 0x1235 0x00 0x00 0x1234 0x0C 0x00 Programming impact: machines of different Endianess • Network programs − htons, htonl, ntohl, ntohs • Saved data files © Alvin R. Lebeck / Andrew Hilton CPS 104 12 Alignment Alignment: require that objects fall on address that is multiple of their size. Byte # 32-bit integer 0 1 2 3 • Aligned if address % 4 = 0 Aligned 64-bit integer? • Aligned if ? Not Aligned Results of un-aligned access? Depends… • Nothing • Accepted, but slow (very very slow?) • Crash your program © Alvin R. Lebeck / Andrew Hilton CPS 104 13 Memory Layout Program has many pieces, all in memory 2n-1 • “Thinks” it has all of memory to itself Stack Pieces of a program: • Instructions: Called “text” − Just numbers! (next few weeks) Typical • Statically allocated data Address − Global variables Space • Dynamically allocated data: Heap Heap − new (Java), malloc (C) − Grows “up” (to higher addresses) • Local variables, parameters, RA: Stack Data − Grows “down” Text 0 Reserved © Alvin R. Lebeck / Andrew Hilton CPS 104 14 Memory Layout: Example int anumber = 3; 2n-1 Stack int factorial (int x) { if (x == 0) { return 1; } Typical else { Address return x * factorial (x – 1); Space } Heap } int main (void) { Data int z = factorial (anumber); printf(“%d\n”, z); Text return 0; 0 Reserved } © Alvin R. Lebeck / Andrew Hilton CPS 104 15 Let’s do a little Java… public class Example { public static void swap (int x, int y) { int temp = x; x = y; y = temp; } public static void main (String[] args) { int a = 42; int b = 100; swap (a, b); System.out.println(“a =“ + a + “ b = “ + b); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 16 Let’s do a little Java… public class Example { Stack public static void swap (int x, int y) { main int temp = x; a 42 x = y; b 100 y = temp; } public static void main (String[] args) { int a = 42; int b = 100; swap (a, b); System.out.println(“a =“ + a + “ b = “ + b); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 17 Let’s do a little Java… public class Example { Stack public static void swap (int x, int y) { main int temp = x; a 42 x = y; b 100 y = temp; swap } x 42 public static void main (String[] args) { y 100 temp ??? int a = 42; RA c0 int b = 100; c0 swap (a, b); System.out.println(“a =“ + a + “ b = “ + b); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 18 Let’s do a little Java… public class Example { Stack public static void swap (int x, int y) { main int temp = x; a 42 x = y; b 100 y = temp; swap } x 42 public static void main (String[] args) { y 100 temp 42 int a = 42; RA c0 int b = 100; c0 swap (a, b); System.out.println(“a =“ + a + “ b = “ + b); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 19 Let’s do a little Java… public class Example { Stack public static void swap (int x, int y) { main int temp = x; a 42 x = y; b 100 y = temp; swap } x 100 public static void main (String[] args) { y 100 temp 42 int a = 42; RA c0 int b = 100; c0 swap (a, b); System.out.println(“a =“ + a + “ b = “ + b); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 20 Let’s do a little Java… public class Example { Stack public static void swap (int x, int y) { main int temp = x; a 42 x = y; b 100 y = temp; swap } x 100 public static void main (String[] args) { y 42 temp 42 int a = 42; RA c0 int b = 100; c0 swap (a, b); System.out.println(“a =“ + a + “ b = “ + b); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 21 Let’s do a little Java… public class Example { Stack public static void swap (int x, int y) { main int temp = x; a 42 x = y; b 100 y = temp; } public static void main (String[] args) { int a = 42; int b = 100; swap (a, b); System.out.println(“a =“ + a + “ b = “ + b); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 22 Let’s do some different Java… public class Ex2 { Stack int data; main public Ex2 (int d) { data = d; } a ??? public static void swap (Ex2 x, Ex2 y) { b ??? int temp = x.data; x.data = y.data; y.data = temp; } public static void main (String[] args) { Example a = new Example (42); Example b = new Example (100); swap (a, b); System.out.println(“a =“ + a.data + “ b = “ + b.data); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 23 Let’s do some different Java… public class Ex2 { Stack Heap int data; main public Ex2 (int d) { data = d; } a Ex2 public static void swap (Ex2 x, Ex2 y) { b ??? data 42 int temp = x.data; x.data = y.data; y.data = temp; } public static void main (String[] args) { Example a = new Example (42); Example b = new Example (100); swap (a, b); System.out.println(“a =“ + a.data + “ b = “ + b.data); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 24 Let’s do some different Java… public class Ex2 { Stack Heap int data; main public Ex2 (int d) { data = d; } a Ex2 public static void swap (Ex2 x, Ex2 y) { b data 42 int temp = x.data; x.data = y.data; y.data = temp; } public static void main (String[] args) { Example a = new Example (42); Example b = new Example (100); Ex2 data 100 swap (a, b); System.out.println(“a =“ + a.data + “ b = “ + b.data); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 25 Let’s do some different Java… public class Ex2 { Stack Heap int data; main public Ex2 (int d) { data = d; } a Ex2 public static void swap (Ex2 x, Ex2 y) { b data 42 int temp = x.data; x.data = y.data; swap y.data = temp; x } y temp ?? public static void main (String[] args) { RA c0 Example a = new Example (42); Example b = new Example (100); Ex2 c0 data 100 swap (a, b); System.out.println(“a =“ + a.data + “ b = “ + b.data); } } What does this print? Why? © Alvin R. Lebeck / Andrew Hilton CPS 104 26 Let’s do some different Java… public class Ex2 { Stack Heap int data; main public Ex2 (int d) { data = d; } a Ex2 public static void swap (Ex2 x, Ex2 y) { b data 42 int temp = x.data; x.data = y.data; swap y.data = temp; x } y temp 42 public static void main (String[] args) { RA c0 Example a = new Example (42); Example b = new Example (100); Ex2 c0 data 100 swap (a, b); System.out.println(“a =“ + a.data + “ b = “ + b.data); } } What does this print? Why? © Alvin R.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    54 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us