Midterm CSE 131 Winter 2012

Similar documents
Midterm CSE 131 Winter 2014

Midterm CSE 131 Winter 2013

Midterm CSE 131 Fall 2014

Final CSE 131 Fall 2014

Midterm CSE 131 Winter 2015

Final CSE 131 Winter 2012

Final CSE 131 Fall 2015

Final CSE 131 Winter 2010

CSE 30 Fall 2013 Final Exam

CSE 30 Winter 2014 Final Exam

CSE 30 Fall 2012 Final Exam

Midterm CSE 131B Spring 2005

Final CSE 131B Spring 2004

CSE 30 Winter 2009 Final Exam

CSE 30 Spring 2007 Final Exam

CSE 30 Fall 2007 Final Exam

CSE 30 Spring 2006 Final Exam

CSE 30 Fall 2006 Final Exam

Final CSE 131B Spring 2005

Chapter 2 Bits, Data Types, and Operations

Chapter 2 Bits, Data Types, and Operations

Do not start the test until instructed to do so!

Chapter 2 Bits, Data Types, and Operations

Do not start the test until instructed to do so!

Number Systems for Computers. Outline of Introduction. Binary, Octal and Hexadecimal numbers. Issues for Binary Representation of Numbers

Do not start the test until instructed to do so!

Chapter 2 Bits, Data Types, and Operations

CS/ECE 252: INTRODUCTION TO COMPUTER ENGINEERING UNIVERSITY OF WISCONSIN MADISON

CS/ECE 252: INTRODUCTION TO COMPUTER ENGINEERING UNIVERSITY OF WISCONSIN MADISON

Data Representation and Binary Arithmetic. Lecture 2

Chapter 2 Bits, Data Types, and Operations

CPS 104 Computer Organization and Programming Lecture-2 : Data representations,

CS 159 Credit Exam. What advice do you have for students who have previously programmed in another language like JAVA or C++?

Chapter 8. Characters and Strings

CS341 *** TURN OFF ALL CELLPHONES *** Practice NAME

CSE-1520R Test #1. The exam is closed book, closed notes, and no aids such as calculators, cellphones, etc.

Week 1 / Lecture 2 8 March 2017 NWEN 241 C Fundamentals. Alvin Valera. School of Engineering and Computer Science Victoria University of Wellington

CSE-1520R Test #1. The exam is closed book, closed notes, and no aids such as calculators, cellphones, etc.

This exam is to be taken by yourself with closed books, closed notes, no calculators.

Unit 3, Lesson 2 Data Types, Arithmetic,Variables, Input, Constants, & Library Functions. Mr. Dave Clausen La Cañada High School

Data Representa5on. CSC 2400: Computer Systems. What kinds of data do we need to represent?

CPSC 213. Introduction to Computer Systems. Procedures and the Stack. Unit 1e

CPSC 213. Introduction to Computer Systems. Procedures and the Stack. Unit 1e

Midterm CSE 131B Spring 2006

Data Representa5on. CSC 2400: Computer Systems. What kinds of data do we need to represent?

Fundamentals of Programming (C)

Chapter 3. Information Representation

DATA REPRESENTATION. Data Types. Complements. Fixed Point Representations. Floating Point Representations. Other Binary Codes. Error Detection Codes

ASSIGNMENT 5 TIPS AND TRICKS

Bits and Bytes. Data Representation. A binary digit or bit has a value of either 0 or 1; these are the values we can store in hardware devices.

Number Representations

This is great when speed is important and relatively few words are necessary, but Max would be a terrible language for writing a text editor.

Introduction to Decision Structures. Boolean & If Statements. Different Types of Decisions. Boolean Logic. Relational Operators

Oberon Data Types. Matteo Corti. December 5, 2001

Binary Numbers. The Basics. Base 10 Number. What is a Number? = Binary Number Example. Binary Number Example

CMPSC 311- Introduction to Systems Programming Module: Strings

Under the Hood: Data Representation. Computer Science 104 Lecture 2

APPENDIX A : KEYWORDS... 2 APPENDIX B : OPERATORS... 3 APPENDIX C : OPERATOR PRECEDENCE... 4 APPENDIX D : ESCAPE SEQUENCES... 5

The Binary Number System

CPSC 213. Introduction to Computer Systems. Procedures and the Stack. Unit 1e

6.096 Introduction to C++ January (IAP) 2009

CSE 5A Final Fall 2006

Chapter 2 Number System

Experiment 3. TITLE Optional: Write here the Title of your program.model SMALL This directive defines the memory model used in the program.

Final CSE 131B Winter 2003

Appendix A Developing a C Program on the UNIX system

Simple Data Types in C. Alan L. Cox

void mouseclicked() { // Called when the mouse is pressed and released // at the same mouse position }

Lecture (09) x86 programming 8

Numbers and Computers. Debdeep Mukhopadhyay Assistant Professor Dept of Computer Sc and Engg IIT Madras

Number Systems Base r

1.1. INTRODUCTION 1.2. NUMBER SYSTEMS

5/17/2009. Digitizing Discrete Information. Ordering Symbols. Analog vs. Digital

The following are the data types used in the C programming language:

Midterm Exam, Fall 2015 Date: October 29th, 2015

Lecture 10 Arrays (2) and Strings. UniMAP SEM II - 11/12 DKT121 1

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

Fundamental Data Types

Fundamentals of Programming

Exercises Software Development I. 03 Data Representation. Data types, range of values, internal format, literals. October 22nd, 2014

User s Manual. Xi3000 Scanner. Table of Contents

n NOPn Unary no operation trap U aaa NOP Nonunary no operation trap i

Please refer to the turn-in procedure document on the website for instructions on the turn-in procedure.

PureScan - ML1. Configuration Guide. Wireless Linear Imager Wireless Laser scanner - 1 -

Question Points Score Total: 100

CMSC 313 Lecture 03 Multiple-byte data big-endian vs little-endian sign extension Multiplication and division Floating point formats Character Codes

EE 109 Unit 2. Analog vs. Digital. Analog vs. Digital. Binary Representation Systems ANALOG VS. DIGITAL

3. Provide the routing table of host H located in LAN E, assuming that the host s network interface is called i1. ARes/ComNet

Variables and data types

Characters Lesson Outline

Programming Fundamentals (CS 302 ) Dr. Ihsan Ullah. Lecturer Department of Computer Science & IT University of Balochistan

EE 109 Unit 3. Analog vs. Digital. Analog vs. Digital. Binary Representation Systems ANALOG VS. DIGITAL

EXPERIMENT 7: Introduction to Universal Serial Asynchronous Receive Transmit (USART)

Homework #3 CS2255 Fall 2012

Introduction to C. Systems Programming Concepts

CS/ECE 252: INTRODUCTION TO COMPUTER ENGINEERING COMPUTER SCIENCES DEPARTMENT UNIVERSITY OF WISCONSIN-MADISON

Final Exam Practice Questions

Problem Max. Points Act. Points Grader

Configuration Manual PULSAR C CCD SCANNER. Table of Contents

LESSON 1. A C program is constructed as a sequence of characters. Among the characters that can be used in a program are:

Transcription:

Login Name Signature _ Name Student ID Midterm CSE 131 Winter 2012 Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 (22 points) (29 points) (25 points) (34 points) (20 points) (18 points) Subtotal (148 points = 100%) Page 7 Extra Credit (9 points) Total This exam is to be taken by yourself with closed books, closed notes, no electronic devices. You are allowed one side of an 8.5"x11" sheet of paper handwritten by you. 0

1. Given the following CUP grammar snippet (assuming all other Lexing and terminals are correct): Expr ::= Des AssignOp {: System.out.println("1"); :} Expr {: System.out.println("3"); :} Des {: System.out.println("5"); :} ; Des ::= T_STAR {: System.out.println("7"); :} Des {: System.out.println("9"); :} T_AMPERSAND {: System.out.println("11"); :} Des {: System.out.println("13"); :} T_PLUSPLUS {: System.out.println("15"); :} Des {: System.out.println("17"); :} Des2 {: System.out.println("19"); :} ; Des2 ::= Des2 {: System.out.println("21"); :} T_PLUSPLUS {: System.out.println("23"); :} Des3 {: System.out.println("25"); :} ; Des3 ::= T_ID {: System.out.println("27"); :} ; AssignOp ::= T_ASSIGN {: System.out.println("29"); :} ; What is the output when parsing the follow expression (you should have 20 lines/numbers in your output): Output *++x = &*y++ In the above grammar, what is the associativity of the operators in the second production rule (the Des ::= rule)? If variable y is defined to be type int *, what type must variable x be defined for this expression to be semantically correct? _ x; 1

2. For each pair of Reduced-C expressions listed below (using the specs for Project I from this quarter), if the types of the two expressions are equivalent to each other, write the letter from the box below for EQ. If they are not equivalent, but they are assignable then write the letter from the box below for L->R if the left type is assignable to the right or the letter for R->L if the right type is assignable to the left. If they are neither equivalent nor assignable, write the letter for None. structdef M { float[4] j; }; structdef N { float[4] j; }; typedef int* IPTR; typedef int[4] IARR; typedef N SDN; IPTR ip; IARR ia; float * fp; M m; N n; SDN sdn; Equivalent/Assignable? A) EQ B) L->R C) R->L D) None ia[3] ip[2] *ip sizeof(ip) m n m.j ip fp[0] *ip/4.2 m.j fp *fp *ip n sdn fp ip &n &sdn &fp &ip ia ip &fp &m.j[0] fp ia Given the C array declaration C int a[4][2]; Mark with an A all the memory location(s) where we would find the array element a: a[2][1] low memory high memory Each box represents a byte in memory. Give the order of the typical C compilation stages and on to actual execution as discussed in class 1 prog.exe/a.out (Executable image) 6 cpp (C preprocessor) 2 Object file (prog.o) 7 Assembly file (prog.s) 3 Loader 8 ccomp (C compiler) 4 as (Assember) 9 Source file (prog.c) 5 Program Execution 10 ld (Linkage Editor) 11 Segmentation Fault (Core Dump) / General Protection Fault gcc > > > > > > > > > > 2

3. Given the following Reduced-C definitions: function : float & foo( float & a ) { return a; } float x; /* global variables */ int y; For each of the following statements, indicate the type of error (if any) that should be reported according to the Project I spec for this quarter. Use the letters associated with the available errors in the box below. x = foo( 4.2 ); x = foo( y ); x = foo( x ); x = foo( foo( x ) ); y = foo( x ); x = foo( x + y ); &x = &foo( x ); foo( x ) = foo( x ); foo( x ) = x; foo( x ) = y; (int) foo( x ) = y; foo( x ) = &x; foo( x ) = (float *) &y; A) No Error B) Argument passed to reference param is not a modifiable L-val C) Argument not assignable to value param D) Argument not equivalent to reference param E) Left-hand operand is not assignable (not a modifiable L-val) F) Right-hand-side type not assignable to left-hand-side type Using the Right-Left rule (which follows the operator precedence rules) write the C definition of a variable named foo that is a pointer to an array of 8 elements where each element is a pointer to a function that takes a pointer to a pointer to a char as a single parameter and returns a pointer to an array of 4 elements where each element is a pointer to a pointer to a struct Fubaz. (8 points) Using Reduced-C syntax, define a variable named fubar that is a pointer to an array of 39 floats. This should take two lines of code. Now write a syntactically and semantically correct line of Reduced-C code to assign the last value in the array fubar points to into the variable f below (assume the variable f has been properly defined to be of type float and memory allocated for the array and fubar has been properly assigned to point to this array). f = ; 3

4. Consider the following struct definitions in Reduced-C (similar to C/C++). Specify the size of each struct on a typical RISC architecture (like ieng9) or 0 if it is an illegal definition. structdef FOO1 { FOO1 * a; float b; function : void bar( FOO1 &x) { int[10] y; } int[2] c; int d; }; structdef FOO2 { int * a; float b; function : void bar() { int x = *this.a; } FOO2 * c; int * d; }; structdef FOO3 { int a; float b; function : void bar() { FOO3 *x; } int c; int[3] d; }; Size Size Size Identify whether each of the following will cause an underlying bit pattern change. int a = 5; float b = -4.20; int * ptr1; float * ptr2; void foo( float x, float & y ) { /* */ } 1) Yes Underlying bit pattern change 2) No No underlying bit pattern change b = a; a = * (int *) & b; ptr1 = (int *) & b; ptr2 = (float *) ptr1; a = (int) b; foo( a, b ); Modifiable L-vals, Non-Modifiable L-vals, R-vals Using the Reduced-C Spec (which closely follows the real C language standard), given the definitions below, indicate whether each expression evaluates to either a A) Non-Modifiable L-val B) Modifiable L-val C) R-val function : int * foo1() { /* Function body not important. */ } function : int & foo2() { /* Function body not important. */ } float[9] a; float x; const float y = 5.5; float *p = &x; foo2() 4.2 *foo1() x = y *(int *)p p a[2] (int *)&x *(int *)&x (float *)foo1() x *p **&p y foo2() * y &x a &*p *p y foo2 ++x &a[0] a[2]++ foo1() ++foo2() 4

5. Show the memory layout of the following C struct definition taking into consideration the SPARC data type memory alignment restrictions discussed in class. Fill bytes in memory with the appropriate struct member/field name. For example, if member/field name p takes 4 bytes, you will have 4 p's in the appropriate memory locations. If the member/field is an array, use the name followed by the index number. For example, some number of p[0]s, p[1]s, p[2]s, etc. If the member/field is a struct, use the member name followed by its member names (e.g. p.a, p.b). Place an X in any bytes of padding. Circle the page number below for an extra point. Structs and unions are padded so the total size is evenly divisible by the strictest alignment requirement of its members. low memory fubaz: struct foo { char a; short b; double c; int d; }; struct fubar { short e; struct foo f; char g[9]; short h; }; struct fubar fubaz; high memory What is the sizeof( struct fubar )? _ What is the offsetof( struct fubar, g[1] )? _ What is the alignment restriction for struct foo? _ What is the alignment restriction for struct fubar? _ If struct fubar had been defined as union fubar instead, what would be the sizeof(union fubar)? _ What is the resulting type of the following expression? * (char *) & ( ( (struct fubar *) & fubaz.f ) -> e ) Write the equivalent expression that directly accesses this value/memory location without all the fancy casting and & operators. fubaz. 5

6. Fill in the names of the 5 main areas of the C Runtime Environment as laid out by most Unix operating systems (and Solaris on SPARC architecture in particular) as discussed in class. Then state what parts of a C program are in each area. low memory high memory The following RC input program contains *FOUR* erroneous statements. Indicate which lines are erroneous, and what the error would be from the list of available error messages we provided below. 01: int x = 123; 02: const int y = 420; 03: const float z = x + y; 04: const float w = y * y; 05: int * v = NULL; 06: function : int main() { 07: return v[-50]; 08: return z; 09: v = &(-x); 10: return sizeof(int[y]); 11: return sizeof(null); 12: *&*&*&*&y = *&*&*&x; 13: return *v; 14: } List of types of errors: A: An error that wouldn't be tested (WNBT) B: Incompatible type to binary operator C: Incompatible type to unary operator D: Left-hand operand is not assignable (not a modifiable L-value) E: Value not assignable to variable's type F: Type of return expression not assignment compatible with function's return type G: Type of return expression not equivalent to the function's return type H: Return expression is not a modifiable L-value I: Initialization value of constant not known at compile-time J: Initialization value not assignable to constant/variable K: Index expression value in array declaration must be > 0 L: Index value is outside legal range M: Invalid operand to sizeof. Not a type or not addressable N: Non-addressable argument to address-of operator Error #1: Line # Error #2: Line # Error #3: Line # Error #4: Line # Error Type Error Type Error Type Error Type 6

Extra Credit What gets printed when the following C program is executed? #include <stdio.h> int main() { char a[] = "34589"; char *p = a; printf( "%c\n", *p++ ); printf( "%c\n", ++*p ); printf( "%c\n", *p = p[-1] + 1 ); printf( "%c\n", ++*p++ ); printf( "%c\n", ++*p ); printf( "%c\n", --*++p ); printf( "%c\n", ++*(p+1) ); printf( "%d\n", p - a ); printf( "%s\n", a ); } return 0; A portion of the C Operator Precedence Table Operator Associativity ++ postfix increment L to R -- postfix decrement [] array element () function call -------------------------------------- * indirection R to L ++ prefix increment -- prefix decrement & address-of sizeof size of type/object (type) type cast -------------------------------------- * multiplication L to R / division % modulus -------------------------------------- + addition L to R - subtraction --------------------------------------.. -------------------------------------- = assignment R to L Hexadecimal - Character 00 NUL 01 SOH 02 STX 03 ETX 04 EOT 05 ENQ 06 ACK 07 BEL 08 BS 09 HT 0A NL 0B VT 0C NP 0D CR 0E SO 0F SI 10 DLE 11 DC1 12 DC2 13 DC3 14 DC4 15 NAK 16 SYN 17 ETB 18 CAN 19 EM 1A SUB 1B ESC 1C FS 1D GS 1E RS 1F US 20 SP 21! 22 " 23 # 24 $ 25 % 26 & 27 28 ( 29 ) 2A * 2B + 2C, 2D - 2E. 2F / 30 0 31 1 32 2 33 3 34 4 35 5 36 6 37 7 38 8 39 9 3A : 3B ; 3C < 3D = 3E > 3F? 40 @ 41 A 42 B 43 C 44 D 45 E 46 F 47 G 48 H 49 I 4A J 4B K 4C L 4D M 4E N 4F O 50 P 51 Q 52 R 53 S 54 T 55 U 56 V 57 W 58 X 59 Y 5A Z 5B [ 5C \ 5D ] 5E ^ 5F _ 60 61 a 62 b 63 c 64 d 65 e 66 f 67 g 68 h 69 i 6A j 6B k 6C l 6D m 6E n 6F o 70 p 71 q 72 r 73 s 74 t 75 u 76 v 77 w 78 x 79 y 7A z 7B { 7C 7D } 7E ~ 7F DEL 7

Scratch Paper 8

Scratch Paper 9