CPSC 213, Summer 2017, Term 2 Midterm Exam Solution Date: July 27, 2017; Instructor: Anthony Estey
|
|
- Justin Davidson
- 6 years ago
- Views:
Transcription
1 CPSC 213, Summer 2017, Term 2 Midterm Exam Solution Date: July 27, 2017; Instructor: Anthony Estey 1 (10 marks) Memory and Numbers. Consider the following C code containing global variables a, b, c, and d, that is executed on a big endian, 32-bit processor. Assume that the address of a is 0x1000 and that the compiler allocates the variables contiguously, in the order they appear, wasting no memory between them other than what is required to ensure that they are properly aligned (and assuming that int s and pointers are 4-bytes long). With this information, you can determine the value of certain bytes of memory following the execution of foo(). int a; int b; char c; int* d; void foo() { a = 0x ; c = 0x12; d = &a; b = *d; *d = 0x ; 1a List the address and value of every memory location whose address and value you know. Use the form address: value. List every byte on a separate line and list all numbers in hex. 1000: 0x : 0x : 0x : 0x : 0x : 0x : 0x : 0x : 0x12 100c: 0x00 100d: 0x00 100e: 0x10 100f: 0x00 1b Would anything change about your answer to part A if the processor were little-endian (yes/no). If yes, list the address: value pairs for only memory addresses that would be changed (if any). Yes. 1004: 0x : 0x : 0x : 0x11 100c: 0x00 (the values for each of the 4 bytes in memory 100d: 0x10 would be in opposite order, but technically 100e: 0x00 only the values 100d and 100e actually change 100f: 0x00 in this case)
2 2 (6 marks) Machine Model and Instructions In assignment 2, you had to complete the CPU.java program using the tables (found on the last page of this exam) as a reference for the SM213 instruction semantics. 2a First, translate the Machine Language instructions below into assembly. Use the tables to determine what value is written to memory, and what address it is written to after the instructions have been executed. Machine Language Instructions: Assembly Language Instructions: ld $0x2000, r1 ld $5, r2 ld $4, r3 add r2, r3 st r3, 0(r1) Memory address written to: 0x2000 Value written to memory: 9 2b Assume the address of the first instruction is at memory address 0x200 (0x200 in base-16 translates to 512 in base-10/decimal). What is the address of the first instruction after the final instruction in the snippet above? Listing the sizes of each instruction may help you come up with the answer, and could award you part marks for an incorrect solution. (You can answer in decimal or hexadecimal) 0x = 0x216 in hexadecimal = 534 in decimal 3 (8 marks) C Pointers. Consider the following global variable declarations int *a; int *b; int c[5] = (int[5]){5, 4, 3, 2, 1; Assume that the address of a is at location 0x1000, the address of b is at location 0x2000, and the address of c is at location 0x3000. Now, consider the the execution of the following additional code: a = &c[1]; b = c + 3; *c = *a + *b; a = a - 1; *c = *a + *b; Answer these questions about the value of these variables following the execution of the code. 3a What are the values in array c, c[0]... c[4]? 8, 4, 3, 2, 1 3b What is the value of a? 0x3000 3c What is the value of *a? 8 3d What is the value of *a + *b + *c? 18 2
3 4 (8 marks) Global Variables and Arrays. Answer the following questions about the global variables a, b, i, j, and k, declared as follows. Treat each sub-question separately (i.e., do not use values computed in prior sub-questions). Comments are not required, but they will probably help you. int i, j, k; int a[10]; int* b; 4a Give assembly code for the C statement: a[i] = i. ld $i, r0 # r0 = &i ld (r0), r0 # r0 = i ld $a, r1 # r1 = &a st r0, (r1, r0, 4) # a[i] = i 4b Give assembly code for the C statement: i = a[i+b[i]]. ld $i, r0 # r0 = &i ld (r0), r1 # r1 = i ld $b, r2 # r2 = &b; ld (r2), r2 # r2 = b[0] ld (r2, r1, 4), r2 # r2 = b[i] add r1, r2 # r2 = i + b[i] ld $a, r3 # r3 = &a ld (r3, r2, 4), r3 # r3 = a[i+b[i]] st r3, (r0) # i = a[i+b[i]] 4c Give assembly code for the C statement: i = a[i + j + k] (use as many registers as you want). Could the C statement be written if the system only had 2 registers available for use? YES / NO Yes ld $i, r0 # r0 = &i ld (r0), r0 # r0 = i ld $j, r1 # r1 = &j ld (r1), r1 # r1 = j add r1, r0 # r0 = i + j ld $k, r1 # r1 = $k ld (r1), r1 # r1 = k add r1, r0 # r0 = i + j + k ld $a, r1 # r1 = &a ld (r1, r0, 4), r1 # r1 = a[i + j + k] ld $i, r0 # r0 = &i st r1, (r0) # i = a[i + j + k] Solution using more than 2 regs: ld $a, r0 # r0 = &a ld $i, r1 # r1 = &i ld (r1), r2 # r2 = i ld $j, r3 # r3 =&j ld (r2), r3 # r3 = j ld $k, r4 # r4 = &k ld (r3) r4 # r4 = k add r3, r2 # r2 = i + j add r4, r2 # r2 = i + j + k ld (r0, r2, 4), r5 # r5 = a[i + j + k] st r5, (r1) # i = a[i + j + k] 3
4 5 (10 marks) Structs and Instance Variables. Assume two global variables root and other, have been declared. struct B { int data[2]; struct A* parent; int id; ; struct A { struct A* left; struct A* right; struct B node; ; struct A* root; struct B other; Treat each sub-question separately (i.e., do not use values computed in prior sub-questions). required, but they will probably help you. Assume all pointers are 4 bytes long. 5a What is the offset to id in struct B? 12 Comments are not 5b Give assembly code for the C statement: other.id = root->node.id;. ld $other, r0 # r0 = &other ld $root, r1 # r1 = &root ld (r1), r1 # r1 = root ld 20(r1), r1 # r1 = root->node.id st r1, 12(r0) # other.id = root->node.id 5c Give assembly code for the C statement: root->right->node.id = root->left->right->node.parent->node.id;. ld $root, r0 # r0 = &root ld (r0), r0 # r0 = root mov r0, r1 # r1 = root ld 4(r0), r0 # r0 = root->right ld (r1), r1 # r1 = root->left ld 4(r1), r1 # r1 = root->left->right ld 16(r1), r1 # r1 = root->left->right->parent ld 20(r1), r1 # r1 = root->left->right->parent->node.id st r1, 20(r0) # root->r->n.id = root->l->r->p->n.id 5d Determine how many memory reads are required to execute the C statement: (Listing the read operations in Assembly or C is not required by may help you, and get you part marks). other.id = root->left->node.id; Reads (3): root root->left root->left->node.id. 4
5 6 (8 marks) Static Control Flow. Answer these questions where x and y are global integer variables, and have been initialized to values greater than 0. 6a Give assembly code for the following C code snippet: if (x == y) x = -y else x = y; ld $x, r0 # r0 = &x ld 0x0(r0), r1 # r1 = x ld $y, r2 # r2 = &y ld 0x0(r2), r3 # r3 = y mov r3, r4 # r4 = y not r4 inc r4 # r4 = -y mov r4, r5 # r5 = -y add r1, r4 # r4 = x-y beq r4, L0 # goto L0 if x == y st r3, 0x0(r0) # x = y br L1 L0: st r5, 0x0(r0) # x = -y L1: halt 5
6 6b Imaginary Scenario: Your partner sent you their part of the assignment, but somehow all of the lines of assembly code got scrambled (darn vim!). The code you received has all of the necessary assembly instructions, but they are out of order. Additionally, your partner could not remember what the code was supposed to do. Your first task is to reorganize the given assembly instructions on the left to produce a correct translation of one of the four code snippets on the right. Each line of scrambled code can only be used once. Once complete, circle the snippet on the right that the assembly code correctly translates. (Hint: Think systematically. The code snippets on the right are all similar, so think about how you would begin to translate any one of them. Cross off one line from the supplied code when you use it in your solution. I have started the process for you, and crossed off ld $x, r0) Comments are not required, but they will probably help you. Code supplied by partner: Circle the C snippet your assembly code translates: mov r3, r4 L1: st r3, (r2) ld (r0), r1 br L0 ld (r2), r3 dec r3 L0: beq r1, L1 ld $x, r0 st r1, (r0) add r4, r3 ld $y, r2 dec r1 Write your (unscrambled) code here: ld $x, r0 # r0 = &x ld (r0), r1 # r1 = x = x ld $y, r2 # r2 = &y ld (r2), r3 # r3 = y = y L0: beq r1, L1 # goto L1 if x == 0 mov r3, r4 # r4 = y add r4, r3 # r3 = y + y dec r3 dec r1 br L0 # goto L0 L1: st r3, (r2) # y = y st r1, (r0) # x = x while (x > 0) { x += y; x--; y--; while (x > 0) { y += y; x--; y--; while (x > 0) { x += x; x--; y--; while (x > 0) { y += x; x--; y--; 6
7 7 (14 marks) Dynamic Allocation. Consider each of the following pieces of C code to determine whether it contains (or may contain) a memory leak, dangling pointer, or other bug that could crash the program. If you think the code snippet does contain a bug, clearly state which bug it is (or may be), and explain why the code produces the bug. If you are unable to determine for certain that the bug exists, but have indicated that it might, clearly explain this as well. Do not fix the bug. If no bug exists, simply say so. Most of the code snippets are very similar. I have highlighted changes from previous versions and/or key things to look for in bold font. 7a void foo() { a = malloc(sizeof(int)); *a = 2; Memory leak; malloc d item is not freed and pointer is lost when assigned to new malloc d item. 7b void foo() { a = NULL; *a = 2; Code will crash; trying to dereference a after pointing it to NULL. 7c void foo() { free(a); int *b = a;... Dangling pointer; b is assigned to a memory location that was just freed. 7d void foo() { free(a); a = NULL; No bug. 7
8 7e void bar(int *b) {... void foo() { bar(a); free(a);... Possible dangling pointer; bar might save a pointer that is then freed in foo 7f void bar(int *b) { int *c = b; void foo() { bar(a); free(a); No bug. 7g void bar(int *b) { b = malloc(sizeof(int)); void foo() { void foo() { bar(a); free(a); a = NULL; Memory leak; there is a memory allocation in bar assigned to a local variable that is lost when bar finishes. 8
9 8 (6 marks) Reference Counting. The following code attempts to implement reference counting, but the reference counts are not handled correctly. 8a What is the reference count value output (in the bold printf statement). 4 8b Determine what the reference count should be output by the printf statement if reference counting had been correctly implemented. 1 8c Modify the code (mostly by adding/removing add_ref and/or dec_ref procedure calls), so the program correctly implements reference counting. struct item { int ref_count; int data; ; struct item *adder = NULL; int number = 0; void inc_ref(struct item *i) { i->ref_count++; void dec_ref(struct item* i) { i->ref_count--; if (i->ref_count == 0) free(i); struct item *process(struct item *temp) { if (adder) dec_ref(adder); adder = temp; inc_ref(adder); adder->data = adder->data + 1; return adder; struct item *make_item() { struct item* i = (struct item*)malloc(sizeof(struct item)); i->ref_count = 1; i->data = number++; struct item *j = process(i); //inc_ref(j); return i; int main (void) { struct item *i1 = make_item(); //inc_ref(i1); struct item *i2 = make_item(); //inc_ref(i2); printf("i1 s ref count: %d", i1->ref_count); //What should i1->ref_count be here?... 9
10 9 (15 marks) Reading Assembly. Comment the following assembly code and then translate it into C. Use the back of the preceding page for extra space if you need it..pos 0x100 ld $a, r2 # r2 = &a ld (r2), r0 # r0 = a ld 4(r2), r1 # r1 = b ld $0, r5 # r5 = temp_c mov r1, r3 # r3 = b not r3 inc r3 # r3 = -b L1: mov r0, r4 # temp_a = temp_a add r3, r4 # temp_a = temp_a - b bgt r4, L2 # goto L2 if temp_a > b beq r4, L2 # goto L2 if temp_a >= b else: br L3 # else goto L3 L2: inc r5 # temp_c++ add r3, r0 # temp_a -= b br L1 # goto L1 L3: st r0, (r2) # a = temp_a ld $c, r2 # r2 = &c st r5, (r2) # c = temp_c halt.pos 0x1000 a:.long 20 # assume a >= 0 b:.long 6 # assume b > 0 c:.long 20 9a Translate into C (you do not need to include variable declarations): c = 0; int i = 0; while (a >= b) { while (a >= b) { c++; i++; a -= b; a-=b; c = i; 9b What are the final values at addresses 0x2000, 0x2004, and 0x2008? 2, 6, and 3. 9c Write the code as a single mathematical expression using a, b, and c. Optionally: c = a/b a = a%b 9d Explain what the code does in one sentence (a purpose statement). Dividing a by b, storing remainder in a, and result in c (rounded down to the nearest integer). 10
CPSC 213, Summer 2017, Term 2 Midterm Exam Date: July 27, 2017; Instructor: Anthony Estey
CPSC 213, Summer 2017, Term 2 Midterm Exam Date: July 27, 2017; Instructor: Anthony Estey 1. This is a closed book exam. No notes. No electronic calculators. 2. Answer in the space provided. Show your
More informationCPSC 213, Winter 2009, Term 2 Midterm Exam Date: March 12, 2010; Instructor: Mike Feeley
CPSC 213, Winter 2009, Term 2 Midterm Exam Date: March 12, 2010; Instructor: Mike Feeley This is a closed book exam. No notes. Electronic calculators are permitted. Answer in the space provided. Show your
More informationCPSC213/2014W1 Midterm EXTRA Practice
CPSC213/2014W1 Midterm EXTRA Practice DEC/HEX/BIN NUMERACY 1. Convert into decimal: 1a. 0x33 1b. 0x57 1c. 0xaf 1d. 0x7a 1e. 0x1234 1f. 0x69bd 1g. 0x1a64 1h. 0xdead 2. Convert into hex numbers of the specified
More informationCPSC 213, Winter 2016, Term 2 Final Exam Date: April 19, 2017; Instructor: Mike Feeley and Alan Wagner
CPSC 213, Winter 2016, Term 2 Final Exam Date: April 19, 2017; Instructor: Mike Feeley and Alan Wagner This is a closed book exam. No notes or electronic calculators are permitted. You may remove the last
More informationCPSC 213. Introduction to Computer Systems. Static Scalars and Arrays. Unit 1b
CPSC 213 Introduction to Computer Systems Unit 1b Static Scalars and Arrays 1 Reading for Next 3 Lectures Companion 2.4.1-2.4.3 Textbook Array Allocation and Access 3.8 2 The Big Picture Build machine
More informationCPSC 213, Winter 2013, Term 2 Final Exam Date: April 14, 2014; Instructor: Mike Feeley
CPSC 213, Winter 2013, Term 2 Final Exam Date: April 14, 2014; Instructor: Mike Feeley This is a closed book exam. No notes or electronic calculators are permitted. Answer in the space provided. Show your
More informationData Storage. August 9, Indiana University. Geoffrey Brown, Bryce Himebaugh 2015 August 9, / 19
Data Storage Geoffrey Brown Bryce Himebaugh Indiana University August 9, 2016 Geoffrey Brown, Bryce Himebaugh 2015 August 9, 2016 1 / 19 Outline Bits, Bytes, Words Word Size Byte Addressable Memory Byte
More informationCPSC 213. Introduction to Computer Systems. Scalars and Arrays. Unit 1b
CPSC 213 Introduction to Computer Systems Unit 1b Scalars and Arrays 1 Reading Companion 2.2.3, 2.3, 2.4.1-2.4.3, 2.6 Textbook Array Allocation and Access 1ed: 3.8 2ed: 3.8 2 Design Plan 3 Examine Java
More informationCPSC 213. Introduction to Computer Systems. Static Control Flow. Unit 1d
CPSC 213 Introduction to Computer Systems Unit 1d Static Control Flow 1 Reading Companion 2.7.1-2.7.3, 2.7.5-2.7.6 Textbook 3.6.1-3.6.5 2 Control Flow The flow of control is the sequence of instruction
More informationCPSC 213, Winter 2016, Term 2 Final Exam Solution Date: April 19, 2017; Instructor: Mike Feeley and Alan Wagner
CPSC 213, Winter 2016, Term 2 Final Exam Solution Date: April 19, 2017; Instructor: Mike Feeley and Alan Wagner 1 (4 marks) Variables and Memory. Consider the following code running on 32-bit, big-endian
More informationCPSC 213. Introduction to Computer Systems. Procedures and the Stack. Unit 1e Feb 11, 13, 15, and 25. Winter Session 2018, Term 2
CPSC 213 Introduction to Computer Systems Winter Session 2018, Term 2 Unit 1e Feb 11, 13, 15, and 25 Procedures and the Stack Overview Reading Companion: 2.8 Textbook: 3.7, 3.12 Learning Goals explain
More informationCPSC 213. Introduction to Computer Systems. Readings for Next 2 Lectures. Loops (S5-loop) Control Flow. Static Control Flow. Unit 1d.
Readings for Next 2 Lectures Textbook CPSC 213 Condition Codes - Loops 3.6.1-3.6.5 Introduction to Computer Systems Unit 1d Static Control Flow Control Flow 1 Loops (S5-loop) 2 The flow of control is the
More informationCS61C Midterm Review on C & Memory Management
CS61C Midterm Review on C & Memory Management Fall 2006 Aaron Staley Some material taken from slides by: Michael Le Navtej Sadhal Overview C Array and Pointer Goodness! Memory Management The Three Three
More informationEL2310 Scientific Programming
Lecture 11: Structures and Memory (yaseminb@kth.se) Overview Overview Lecture 11: Structures and Memory Structures Continued Memory Allocation Lecture 11: Structures and Memory Structures Continued Memory
More informationCPSC 213. Introduction to Computer Systems. Instance Variables and Dynamic Allocation. Unit 1c
CPSC 213 Introduction to Computer Systems Unit 1c Instance Variables and Dynamic Allocation 1 Reading For Next 3 Lectures Companion 2.4.4-2.4.5 Textbook Structures, Dynamic Memory Allocation, Understanding
More informationCS16 Exam #1 7/17/ Minutes 100 Points total
CS16 Exam #1 7/17/2012 75 Minutes 100 Points total Name: 1. (10 pts) Write the definition of a C function that takes two integers `a` and `b` as input parameters. The function returns an integer holding
More informationCPSC 213. Introduction to Computer Systems. Static Control Flow. Unit 1d
CPSC 213 Introduction to Computer Systems Unit 1d Static Control Flow 1 Reading Companion 2.7.1-2.7.3, 2.7.5-2.7.6 Textbook 3.6.1-3.6.5 2 Control Flow The flow of control is the sequence of instruction
More informationCPSC 213. Introduction to Computer Systems. Winter Session 2017, Term 2. Unit 1c Jan 24, 26, 29, 31, and Feb 2
CPSC 213 Introduction to Computer Systems Winter Session 2017, Term 2 Unit 1c Jan 24, 26, 29, 31, and Feb 2 Instance Variables and Dynamic Allocation Overview Reading Companion: Reference 2.4.4-5 Textbook:
More informationReading. Companion. Text. - yup, 3.10 again - mainly "Function pointers" box. 1ed: 3.6.6, in Java. static methods are class methods
Reading Companion CPSC 213 Introduction to Computer Systems 2.7.4, 2.7.7-2.7.8 Text Switch Statements, Understanding Pointers 2ed: 3.6.7, 3.10 - yup, 3.10 again - mainly "Function pointers" box 1ed: 3.6.6,
More informationCSCI-243 Exam 1 Review February 22, 2015 Presented by the RIT Computer Science Community
CSCI-243 Exam 1 Review February 22, 2015 Presented by the RIT Computer Science Community http://csc.cs.rit.edu History and Evolution of Programming Languages 1. Explain the relationship between machine
More informationCPSC 213. Introduction to Computer Systems. Reading. Control Flow. Loops (S5-loop) Static Control Flow. Unit 1d. Companion.
Reading Companion CPSC 213 2.7.1-2.7.3, 2.7.5-2.7.6 Textbook 3.6.1-3.6.5 Introduction to Computer Systems Unit 1d Static Control Flow Control Flow 1 Loops (S5-loop) 2 The flow of control is the sequence
More informationCOMP 524 Spring 2018 Midterm Thursday, March 1
Name PID COMP 524 Spring 2018 Midterm Thursday, March 1 This exam is open note, open book and open computer. It is not open people. You are to submit this exam through gradescope. Resubmissions have been
More informationNumbers: positional notation. CS61C Machine Structures. Faux Midterm Review Jaein Jeong Cheng Tien Ee. www-inst.eecs.berkeley.
CS 61C Faux Midterm Review (1) CS61C Machine Structures Faux Midterm Review 2002-09-29 Jaein Jeong Cheng Tien Ee www-inst.eecs.berkeley.edu/~cs61c/ Numbers: positional notation Number Base B B symbols
More informationUniversity of California, Berkeley College of Engineering
University of California, Berkeley College of Engineering Department of Electrical Engineering and Computer Sciences Summer 2015 Instructor: Sagar Karandikar 2015-07-09 L J After the exam, indicate on
More informationWhat will the output of the following code snippet be? Why? What is a safer alternate implementation?
Note to Students: This file contains sample solutions to the term test. Please read the solutions carefully. Make sure that you understand why the solutions given here are correct, that you understand
More informationCA31-1K DIS. Pointers. TA: You Lu
CA31-1K DIS Pointers TA: You Lu Pointers Recall that while we think of variables by their names like: int numbers; Computer likes to think of variables by their memory address: 0012FED4 A pointer is a
More informationReview! Lecture 5 C Memory Management !
CS61C L05 C Memory Management (1)! inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 5 C Memory Management 2010-06-28!!! Instructor Paul Pearce! Symmetric multiprocessor! MIPS support for
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 5 C Memory Management 2010-06-28!!! Instructor Paul Pearce! Symmetric multiprocessor! MIPS support for Android MIPS Technologies (founded
More informationCSE351 Winter 2016, Final Examination March 16, 2016
CSE351 Winter 2016, Final Examination March 16, 2016 Please do not turn the page until 2:30. Rules: The exam is closed-book, closed-note, etc. Please stop promptly at 4:20. There are 125 (not 100) points,
More informationFinal CSE 131B Spring 2005
Login name Signature Name Student ID Final CSE 131B Spring 2005 Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 (27 points) (24 points) (32 points) (24 points) (32 points) (26 points) (31 points)
More informationDepartment of Electrical Engineering and Computer Sciences Spring 2013 Instructor: Dr. Dan Garcia CS61C Midterm
University of California, Berkeley College of Engineering Department of Electrical Engineering and Computer Sciences Spring 2013 Instructor: Dr. Dan Garcia 2013-03-04 CS61C Midterm After the exam, indicate
More informationData Representation and Storage. Some definitions (in C)
Data Representation and Storage Learning Objectives Define the following terms (with respect to C): Object Declaration Definition Alias Fundamental type Derived type Use pointer arithmetic correctly Explain
More informationDynamic Memory Allocation and Linked Lists
CSE 2421: Systems I Low-Level Programming and Computer Organization Dynamic Memory Allocation and Linked Lists Presentation I Read/Study: Reek Chapter 11 & 12 Gojko Babić 02-26-2017 Functions malloc and
More informationIn Java we have the keyword null, which is the value of an uninitialized reference type
+ More on Pointers + Null pointers In Java we have the keyword null, which is the value of an uninitialized reference type In C we sometimes use NULL, but its just a macro for the integer 0 Pointers are
More informationFinal CSE 131B Spring 2004
Login name Signature Name Student ID Final CSE 131B Spring 2004 Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 (25 points) (24 points) (32 points) (24 points) (28 points) (26 points) (22 points)
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #4 C Memory Management 2007-06-28 Scott Beamer, Instructor iphone Comes out Tomorrow CS61C L4 C Memory Management (1) www.apple.com/iphone
More informationEL2310 Scientific Programming
Lecture 11: Memory, Files and Bitoperations (yaseminb@kth.se) Overview Overview Lecture 11: Memory, Files and Bit operations Main function; reading and writing Bitwise Operations Lecture 11: Memory, Files
More informationCMSC 212 Midterm #2 (Fall 2005) ANSWERS AND GRADING KEY
CMSC 212 Midterm #2 (Fall 2005) ANSWERS AND GRADING KEY Discussion Section Time (circle one): 12:00 1:00 2:00 3:00 4:00 5:00 Elena Sorelle Morgan (1) This exam is closed book, closed notes, and closed
More informationMemory and Addresses. Pointers in C. Memory is just a sequence of byte-sized storage devices.
Memory and Addresses Memory is just a sequence of byte-sized storage devices. 1 The bytes are assigned numeric addresses, starting with zero, just like the indexing of the cells of an array. It is the
More informationMidterm Exam Nov 8th, COMS W3157 Advanced Programming Columbia University Fall Instructor: Jae Woo Lee.
Midterm Exam Nov 8th, 2012 COMS W3157 Advanced Programming Columbia University Fall 2012 Instructor: Jae Woo Lee About this exam: - There are 4 problems totaling 100 points: problem 1: 30 points problem
More informationUW CSE 351, Winter 2013 Final Exam
Full Name: Student ID #: UW CSE 351, Winter 2013 Final Exam March 20, 2013 2:30pm - 4:20pm Instructions: Write your full name and UW student ID number on the front of the exam. When the exam begins, make
More informationC Review. MaxMSP Developers Workshop Summer 2009 CNMAT
C Review MaxMSP Developers Workshop Summer 2009 CNMAT C Syntax Program control (loops, branches): Function calls Math: +, -, *, /, ++, -- Variables, types, structures, assignment Pointers and memory (***
More informationCPSC 213. Introduction to Computer Systems. Procedures and the Stack. Unit 1e
CPSC 213 Introduction to Computer Systems Unit 1e Procedures and the Stack 1 Readings for Next 3 Lectures Textbook Procedures - 3.7 Out-of-Bounds Memory References and Buffer Overflow - 3.12 2 Local Variables
More informationWeek 9 Part 1. Kyle Dewey. Tuesday, August 28, 12
Week 9 Part 1 Kyle Dewey Overview Dynamic allocation continued Heap versus stack Memory-related bugs Exam #2 Dynamic Allocation Recall... Dynamic memory allocation allows us to request memory on the fly
More informationHeap Arrays and Linked Lists. Steven R. Bagley
Heap Arrays and Linked Lists Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index Variables and arrays have a type Create our
More informationSYSC 2006 C Winter 2012
SYSC 2006 C Winter 2012 Pointers and Arrays Copyright D. Bailey, Systems and Computer Engineering, Carleton University updated Sept. 21, 2011, Oct.18, 2011,Oct. 28, 2011, Feb. 25, 2011 Memory Organization
More informationAgenda. Peer Instruction Question 1. Peer Instruction Answer 1. Peer Instruction Question 2 6/22/2011
CS 61C: Great Ideas in Computer Architecture (Machine Structures) Introduction to C (Part II) Instructors: Randy H. Katz David A. Patterson http://inst.eecs.berkeley.edu/~cs61c/sp11 Spring 2011 -- Lecture
More informationECE 15B COMPUTER ORGANIZATION
ECE 15B COMPUTER ORGANIZATION Lecture 13 Strings, Lists & Stacks Announcements HW #3 Due next Friday, May 15 at 5:00 PM in HFH Project #2 Due May 29 at 5:00 PM Project #3 Assigned next Thursday, May 19
More informationCSE351 Spring 2018, Final Exam June 6, 2018
CSE351 Spring 2018, Final Exam June 6, 2018 Please do not turn the page until 2:30. Last Name: First Name: Student ID Number: Name of person to your left: Name of person to your right: Signature indicating:
More informationThis exam is worth 24 points, or 24% of your total course grade. The exam contains six
CS 60B Final December 14, 1992 Your name login c60b{ Discussion section number TA's name This exam is worth 24 points, or 24% of your total course grade. The exam contains six questions. This booklet contains
More informationMalloc Lab & Midterm Solutions. Recitation 11: Tuesday: 11/08/2016
Malloc Lab & Midterm Solutions Recitation 11: Tuesday: 11/08/2016 Malloc 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than
More informationHacking in C. Pointers. Radboud University, Nijmegen, The Netherlands. Spring 2019
Hacking in C Pointers Radboud University, Nijmegen, The Netherlands Spring 2019 Allocation of multiple variables Consider the program main(){ char x; int i; short s; char y;... } What will the layout of
More informationCPSC 213. Introduction to Computer Systems. Procedures and the Stack. Unit 1e
CPSC 213 Introduction to Computer Systems Unit 1e Procedures and the Stack Readings for Next 3 Lectures Textbook Procedures - 3.7 Out-of-Bounds Memory References and Buffer Overflow - 3.12 Local Variables
More informationCS107 Handout 08 Spring 2007 April 9, 2007 The Ins and Outs of C Arrays
CS107 Handout 08 Spring 2007 April 9, 2007 The Ins and Outs of C Arrays C Arrays This handout was written by Nick Parlante and Julie Zelenski. As you recall, a C array is formed by laying out all the elements
More informationFirst of all, it is a variable, just like other variables you studied
Pointers: Basics What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the address (rather than the value)
More informationInstructions: Submit your answers to these questions to the Curator as OQ02 by the posted due date and time. No late submissions will be accepted.
Instructions: Submit your answers to these questions to the Curator as OQ02 by the posted due date and time. No late submissions will be accepted. For the next five questions, consider the function to
More informationCS24 Week 2 Lecture 1
CS24 Week 2 Lecture 1 Kyle Dewey Overview C Review Void pointers Allocation structs void* (Void Pointers) void* Like any other pointer, it refers to some memory address However, it has no associated type,
More informationThe University of Michigan - Department of EECS EECS 370 Introduction to Computer Architecture Midterm Exam 1 February 17, 2011
The University of Michigan - Department of EECS EECS 370 Introduction to Computer Architecture Midterm Exam 1 February 17, 2011 Name: KEY_(Answers in red) University of Michigan uniqname: (NOT your student
More informationElementary Data Structures: Part 1: Arrays, Lists. CSE 2320 Algorithms and Data Structures Vassilis Athitsos University of Texas at Arlington
Elementary Data Structures: Part 1: Arrays, Lists CSE 2320 Algorithms and Data Structures Vassilis Athitsos University of Texas at Arlington 1 Basic Types Types like integers, real numbers, characters.
More informationParameter passing. Programming in C. Important. Parameter passing... C implements call-by-value parameter passing. UVic SEng 265
Parameter passing Programming in C UVic SEng 265 Daniel M. German Department of Computer Science University of Victoria 1 SEng 265 dmgerman@uvic.ca C implements call-by-value parameter passing int a =
More informationC Programming Basics II
C Programming Basics II Xianyi Zeng xzeng@utep.edu Department of Mathematical Sciences The University of Texas at El Paso. September 20, 2016. Pointers and Passing by Address Upon declaring a variable,
More informationCS113: Lecture 9. Topics: Dynamic Allocation. Dynamic Data Structures
CS113: Lecture 9 Topics: Dynamic Allocation Dynamic Data Structures 1 What s wrong with this? char *big_array( char fill ) { char a[1000]; int i; for( i = 0; i < 1000; i++ ) a[i] = fill; return a; void
More informationClass Information ANNOUCEMENTS
Class Information ANNOUCEMENTS Third homework due TODAY at 11:59pm. Extension? First project has been posted, due Monday October 23, 11:59pm. Midterm exam: Friday, October 27, in class. Don t forget to
More informationPointers. Addresses in Memory. Exam 1 on July 18, :00-11:40am
Exam 1 on July 18, 2005 10:00-11:40am Pointers Addresses in Memory When a variable is declared, enough memory to hold a value of that type is allocated for it at an unused memory location. This is the
More information[0569] p 0318 garbage
A Pointer is a variable which contains the address of another variable. Declaration syntax: Pointer_type *pointer_name; This declaration will create a pointer of the pointer_name which will point to the
More informationChapter 2 (Dynamic variable (i.e. pointer), Static variable)
Chapter 2 (Dynamic variable (i.e. pointer), Static variable) August_04 A2. Identify and explain the error in the program below. [4] #include int *pptr; void fun1() { int num; num=25; pptr= #
More informationCS 61C, Fall, 2005, Midterm 1, Garcia Question 1: For those about to test, we salute you (11 pts, 20 min.)
CS 61C, Fall, 2005, Midterm 1, Garcia Question 1: For those about to test, we salute you (11 pts, 20 min.) You re coming straight from a wild pre-midterm toga party and are not quite focused on the exam.
More informationThe output: The address of i is 0xbf85416c. The address of main is 0x80483e4. arrays.c. 1 #include <stdio.h> 3 int main(int argc, char **argv) 4 {
Memory A bit is a binary digit, either 0 or 1. A byte is eight bits, and can thus represent 256 unique values, such as 00000000 and 10010110. Computer scientists often think in terms of hexadecimal, rather
More informationMARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012
MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)
More informationLectures 13 & 14. memory management
Lectures 13 & 14 Linked lists and memory management Courtesy of Prof. Garcia (UCB) CS61C L05 Introduction to C (pt 3) (1) Review Pointers and arrays are virtually same C knows how to increment pointers
More informationCPSC 213. Introduction to Computer Systems. Dynamic Control Flow Polymorphism and Switch Statements. Unit 1f
CPSC 213 Introduction to Computer Systems Unit 1f Dynamic Control Flow Polymorphism and Switch Statements 1 Readings for Next Two Lectures Text Switch Statements, Understanding Pointers - 2nd ed: 3.6.7,
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 4 Introduction to C (pt 2) 2014-09-08!!!Senior Lecturer SOE Dan Garcia!!!www.cs.berkeley.edu/~ddgarcia! C most popular! TIOBE programming
More informationCOMP26120: Linked List in C (2018/19) Lucas Cordeiro
COMP26120: Linked List in C (2018/19) Lucas Cordeiro lucas.cordeiro@manchester.ac.uk Linked List Lucas Cordeiro (Formal Methods Group) lucas.cordeiro@manchester.ac.uk Office: 2.28 Office hours: 10-11 Tuesday,
More informationCS 31: Intro to Systems Pointers and Memory. Kevin Webb Swarthmore College October 2, 2018
CS 31: Intro to Systems Pointers and Memory Kevin Webb Swarthmore College October 2, 2018 Overview How to reference the location of a variable in memory Where variables are placed in memory How to make
More informationContents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides
Slide Set 1 for ENCM 369 Winter 2014 Lecture Section 01 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary Winter Term, 2014 ENCM 369 W14 Section
More informationHeap Arrays. Steven R. Bagley
Heap Arrays Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index a[42] = 35; Variables and arrays have a type int, char, double,
More informationLecture 2, September 4
Lecture 2, September 4 Intro to C/C++ Instructor: Prashant Shenoy, TA: Shashi Singh 1 Introduction C++ is an object-oriented language and is one of the most frequently used languages for development due
More informationINITIALISING POINTER VARIABLES; DYNAMIC VARIABLES; OPERATIONS ON POINTERS
INITIALISING POINTER VARIABLES; DYNAMIC VARIABLES; OPERATIONS ON POINTERS Pages 792 to 800 Anna Rakitianskaia, University of Pretoria INITIALISING POINTER VARIABLES Pointer variables are declared by putting
More informationIntermediate Programming, Spring 2017*
600.120 Intermediate Programming, Spring 2017* Misha Kazhdan *Much of the code in these examples is not commented because it would otherwise not fit on the slides. This is bad coding practice in general
More informationCS 61C: Great Ideas in Computer Architecture. C Arrays, Strings, More Pointers
CS 61C: Great Ideas in Computer Architecture C Arrays, Strings, More Pointers Instructor: Justin Hsia 6/20/2012 Summer 2012 Lecture #3 1 Review of Last Lecture C Basics Variables, Functions, Flow Control,
More informationCSE351 Spring 2010 Final Exam (9 June 2010)
CSE351 Spring 2010 Final Exam (9 June 2010) Please read through the entire examination first! We designed this exam so that it can be completed in 100 minutes and, hopefully, this estimate will prove to
More informationCSE351 Spring 2010 Final Exam (9 June 2010)
CSE351 Spring 2010 Final Exam (9 June 2010) Please read through the entire examination first! We designed this exam so that it can be completed in 100 minutes and, hopefully, this estimate will prove to
More informationMidterm Sample Questions. a) What evaluates to FALSE in C? What evaluates to TRUE?
Midterm Syllabus: 1. Number systems a. Signed and unsigned representations b. Conversion between different representations c. Overflow condition 2. C Pointers 3. Dynamic Memory Allocation 4. C Data structures:
More informationLecture 14. No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions?
Lecture 14 No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions? Friday, February 11 CS 215 Fundamentals of Programming II - Lecture 14 1 Outline Static
More informationProblem maximum score 1 35pts 2 22pts 3 23pts 4 15pts Total 95pts
University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Sciences CS61c Summer 2001 Woojin Yu Midterm Exam This is a closed-book exam. No calculators
More informationCS 61c: Great Ideas in Computer Architecture
Arrays, Strings, and Some More Pointers June 24, 2014 Review of Last Lecture C Basics Variables, functioss, control flow, types, structs Only 0 and NULL evaluate to false Pointers hold addresses Address
More informationTwo s Complement Review. Two s Complement Review. Agenda. Agenda 6/21/2011
Two s Complement Review CS 61C: Great Ideas in Computer Architecture (Machine Structures) Introduction to C (Part I) Instructor: Michael Greenbaum http://inst.eecs.berkeley.edu/~cs61c/su11 Suppose we had
More information15-122: Principles of Imperative Computation, Spring Written Homework 12. Due: Sunday 15 th April, 2018 by 10pm. Name: Andrew ID: Section:
15-122: Principles of Imperative Computation, Spring 2018 Written Homework 12 Due: Sunday 15 th April, 2018 by 10pm Name: Andrew ID: Section: This written homework provides practice with C features such
More informationMotivation for Dynamic Memory. Dynamic Memory Allocation. Stack Organization. Stack Discussion. Questions answered in this lecture:
CS 537 Introduction to Operating Systems UNIVERSITY of WISCONSIN-MADISON Computer Sciences Department Dynamic Memory Allocation Questions answered in this lecture: When is a stack appropriate? When is
More informationLecture 5: Outline. I. Multi- dimensional arrays II. Multi- level arrays III. Structures IV. Data alignment V. Linked Lists
Lecture 5: Outline I. Multi- dimensional arrays II. Multi- level arrays III. Structures IV. Data alignment V. Linked Lists Multidimensional arrays: 2D Declaration int a[3][4]; /*Conceptually 2D matrix
More informationProblem 2 Add the two 2 s complement signed 8-bit values given below, and express your answer in decimal.
Problem 1 Recall the definition of root in project 1. (The declaration of struct entrynode appears below.) struct entrynode * root; Give the type of each of the following expressions. The answer may be
More informationC Language Part 1 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee
C Language Part 1 (Minor modifications by the instructor) References C for Python Programmers, by Carl Burch, 2011. http://www.toves.org/books/cpy/ The C Programming Language. 2nd ed., Kernighan, Brian,
More informationComputer Architecture I Midterm I
Computer Architecture I Midterm I April 11 2017 Computer Architecture I Midterm I Chinese Name: Pinyin Name: E-Mail... @shanghaitech.edu.cn: Question Points Score 1 1 2 12 3 16 4 14 5 18 6 17 7 22 Total:
More informationIntroduction to C: Pointers
Introduction to C: Pointers Nils Moschüring PhD Student (LMU) Nils Moschüring PhD Student (LMU), Introduction to C: Pointers 1 1 Introduction 2 Pointers Basics Useful: Function
More informationComputer Systems Organization V Fall 2009
Computer Systems Organization V22.0201 Fall 2009 Sample Midterm Exam ANSWERS 1. True/False. Circle the appropriate choice. (a) T (b) F At most one operand of an x86 assembly instruction can be an memory
More informationEECE.2160: ECE Application Programming Spring 2016 Exam 1 Solution
EECE.2160: ECE Application Programming Spring 2016 Exam 1 Solution 1. (20 points, 5 points per part) Multiple choice For each of the multiple choice questions below, clearly indicate your response by circling
More informationCS61, Fall 2012 Midterm Review Section
CS61, Fall 2012 Midterm Review Section (10/16/2012) Q1: Hexadecimal and Binary Notation - Solve the following equations and put your answers in hex, decimal and binary. Hexadecimal Decimal Binary 15 +
More information1. Which of the following best describes the situation after Line 1 has been executed?
Instructions: Submit your answers to these questions to the Curator as OQ3 by the posted due date and time. No late submissions will be accepted. For the next three questions, consider the following short
More informationPointers. Memory. void foo() { }//return
Pointers Pointers Every location in memory has a unique number assigned to it called it s address A pointer is a variable that holds a memory address A pointer can be used to store an object or variable
More informationPersonal SE. Computer Memory Addresses C Pointers
Personal SE Computer Memory Addresses C Pointers Computer Memory Organization Memory is a bucket of bytes. Computer Memory Organization Memory is a bucket of bytes. Each byte is 8 bits wide. Computer Memory
More information