For our homework this week we have two problem. The first one reinforces the concepts in chapter 2. The second one deals with concepts from chapter 3. 1. Your solution to this question must conform to the coding rules restrictions shown at the top of page 129. These are as follows. Assumptions Integers are represented in two’s complement form Right shifts of signed data are performed arithmetically Data type int is w bits long. For some problems you will be given a specific value for w, but otherwise your code should work as long as w is a multiple of 8. You can use the expression sizeof(int)<<3 to compute w. Forbidden Conditionals (if or ?:), loops, switch statements, function calls, and macro invocations. Division, modulus, and multiplication. Relative comparison operators ( >, <, <=, and >=) Allowed operations All bit level and logic operations Left and right shifts, but only with shift amounts between 0 and w - 1 Addition and subtraction Equality (==) and inequality (!=) tests Integer constants INT_MIN and INT_MAX Casting between data types int and unsigned, either explicitly or implicitly Write C expressions that evaluate to 1 when the following conditions are true and to 0 when they are false. Assume x is of type int A. Any bit of x equals 1 B. Any bit of x equals 0 C. Any bit in the least significant byte of x equals 1 D.
For our homework this week we have two problem. The first one reinforces the concepts in chapter 2. The second one deals with concepts from chapter 3. 1. Your solution to this question must conform to the coding rules restrictions shown at the top of page 129. These are as follows. Assumptions Integers are represented in two’s complement form Right shifts of signed data are performed arithmetically Data type int is w bits long. For some problems you will be given a specific value for w, but otherwise your code should work as long as w is a multiple of 8. You can use the expression sizeof(int)<<3 to compute w. Forbidden Conditionals (if or ?:), loops, switch statements, function calls, and macro invocations. Division, modulus, and multiplication. Relative comparison operators ( >, <, <=, and >=) Allowed operations All bit level and logic operations Left and right shifts, but only with shift amounts between 0 and w - 1 Addition and subtraction Equality (==) and inequality (!=) tests Integer constants INT_MIN and INT_MAX Casting between data types int and unsigned, either explicitly or implicitly Write C expressions that evaluate to 1 when the following conditions are true and to 0 when they are false. Assume x is of type int A. Any bit of x equals 1 B. Any bit of x equals 0 C. Any bit in the least significant byte of x equals 1 D. Any bit in the most significant byte of x equals 0 2. The coding restrictions for the previous question do not apply to this question. For the function skeleton long decode2(long x, long y, long z) { long t1 = ? ; long t2 = ? ; long t3 = ? ; long t4 = ? ; return t4; } The parameters x, y, and z are passed in registers %rdi, %rsi, and %rdx. The code stores the return value in register %rax. Suppose the gcc compiler generates the following code subq %rdx, %rsi movq %rsi, %rax imulq %rdi, %rsi salq $63, %rax sarq $63, %rax xorq %rsi, %rax ret Copy the function skeleton to your solutions file and fill in the C code that would have been where the question marks are shown.
Trending now
This is a popular solution!
Step by step
Solved in 2 steps