0% found this document useful (0 votes)
130 views

Sample Questions

This document contains practice problems for a midterm exam in CIS 5027. It includes 6 multiple choice and fill-in-the-blank problems related to C programming, assembly code, and bash scripting. The problems cover topics like data representation, arithmetic operations, loops, and sorting files by name length.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
130 views

Sample Questions

This document contains practice problems for a midterm exam in CIS 5027. It includes 6 multiple choice and fill-in-the-blank problems related to C programming, assembly code, and bash scripting. The problems cover topics like data representation, arithmetic operations, loops, and sorting files by name length.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

CIS 5027, Fall 2018

Practice Quiz for the Mid-term Exam

Problem 1. (15 points):


In the following questions assume the variables a and b are signed integers and that the machine uses two’s
complement representation. Also assume that MAX INT is the maximum integer, MIN INT is the minimum
integer, and W is one less than the word length (e.g., W = 31 for 32-bit integers).
Match each of the descriptions on the left with a line of code on the right (write in the letter).

1. One’s complement of a A. ˜(˜a | (b ˆ (MIN_INT + MAX_INT)))

B. ((a ˆ b) & ˜b) | (˜(a ˆ b) & b)

2. a
C. 1 + (a << 3) + ˜a

3. a & b D. (a << 4) + (a << 2) + (a << 1)

E. ((a < 0) ? (a + 3) : a) >> 2


4. a * 7
F. a ˆ (MIN_INT + MAX_INT)

5. a / 4 G. ˜((a | (˜a + 1)) >> W) & 1

H. ˜((a >> W) << 1)


6. (a < 0) ? 1 : -1

I. a >> 2

Page 1 of 6
Problem 2. (15 points):
Assume we are running code on a 6-bit machine using two’s complement arithmetic for signed integers. A
“short” integer is encoded using 3 bits. Fill in the empty boxes in the table below. The following definitions
are used in the table:

short sy = -3;
int y = sy;
int x = -17;
unsigned ux = x;

Note: You need not fill in entries marked with “–”.

Expression Decimal Representation Binary Representation

Zero 0

– −6

– 01 0010

ux

x >> 1

TMax

−TMin

TMin + TMin

Page 2 of 6
Problem 3. (15 points):
We are running programs on a machine with the following characteristics:

• Values of type int are 32 bits. They are represented in two’s complement, and they are right shifted
arithmetically. Values of type unsigned are 32 bits.

• Values of type float are represented using the 32-bit IEEE floating point format, while values of
type double use the 64-bit IEEE floating point format.

We generate arbitrary values x, y, and z, and convert them to other forms as follows:

/* Create some arbitrary values */


int x = random();
int y = random();
int z = random();
/* Convert to other forms */
unsigned ux = (unsigned) x;
unsigned uy = (unsigned) y;
double dx = (double) x;
double dy = (double) y;
double dz = (double) z;

For each of the following C expressions, you are to indicate whether or not the expression always yields 1.
If so, circle “Y”. If not, circle “N”.

Expression Always True?


(x<y) == (-x>-y) Y N
((x+y)<<4) + y-x == 17*y+15*x Y N
˜x+˜y+1 == ˜(x+y) Y N
ux-uy == -(y-x) Y N
dx * dy * dz == dz * dy * dx Y N

Page 3 of 6
Problem 4. (15 points):
Consider the source code below, where M and N are constants declared with #define.

int mat1[M][N];
int mat2[N][M];

int sum_element(int i, int j)


{
return mat1[i][j] + mat2[i][j];
}

A. Suppose the above code generates the following assembly code:

sum_element:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
movl 12(%ebp),%ecx
sall $2,%ecx
leal 0(,%eax,8),%edx
subl %eax,%edx
leal (%eax,%eax,4),%eax
movl mat2(%ecx,%eax,4),%eax
addl mat1(%ecx,%edx,4),%eax
movl %ebp,%esp
popl %ebp
ret

What are the values of M and N?


M=

N=

Page 4 of 6
Problem 5. (20 points):
Condider the following assembly code for a C for loop:

loop:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%ecx
movl 12(%ebp),%edx
xorl %eax,%eax
cmpl %edx,%ecx
jle .L4
.L6:
decl %ecx
incl %edx
incl %eax
cmpl %edx,%ecx
jg .L6
.L4:
incl %eax
movl %ebp,%esp
popl %ebp
ret

Based on the assembly code above, fill in the blanks below in its corresponding C source code. (Note: you
may only use the symbolic variables x, y, and result in your expressions below — do not use register
names.)

int loop(int x, int y)


{
int result;

for (_____________; ___________; result++ ) {

__________;

__________;
}

__________;

return result;
}

Page 5 of 6
Problem 6. (20 points):
Write a bash script taking a directory as an argument and producing the list of the files in the directory sorted
by the length of the file name.

Page 6 of 6

You might also like