Computer Systems: A Programmer's Perspective (3rd Edition)
3rd Edition
ISBN: 9780134092669
Author: Bryant, Randal E. Bryant, David R. O'Hallaron, David R., Randal E.; O'Hallaron, Bryant/O'hallaron
Publisher: PEARSON
expand_more
expand_more
format_list_bulleted
Concept explainers
Question
Chapter 5, Problem 5.17HW
Program Plan Intro
Given C Code:
void* basic_memset(void *s, int c, size_t n)
{
size_t cnt = 0;
unsigned char *schar = s;
while (cnt < n)
{
*schar++ = (unsigned char) c;
cnt++;
}
return s;
}
Cycles per element (CPE):
- The CPE denotes performance of program that helps in improving code.
- It helps to understand detailed level loop performance for an iterative program.
- It is appropriate for programs that use a repetitive computation.
- The processor’s activity sequencing is controlled by a clock that provides regular signal of some frequency.
Loop unrolling:
- It denotes a program transformation that would reduce count of iterations for a loop.
- It increases count of elements computed in each iteration.
- It reduces number of operations that is not dependent to program directly.
- It reduces count of operations in critical paths of overall computations.
Expert Solution & Answer
Want to see the full answer?
Check out a sample textbook solutionStudents have asked these similar questions
Please define and initialize and array X of length 8. You need implement following and write outcomes with reasons;
int X[ ] = { 1,2,3,4,5,6,7,8 };
1.cout<< X+1;
2.cout<<&X+1;
3.cout<<2[X];
4.cout<<&X[0]+1;
5.cout<<*(X+1);
6.cout<<*X+1;
Also, practice and play with pointers using multiplication, division, subtraction and addition. You may also play with it your ways and find out reasoning. Write down those reasoning.
Someone tries to fix the stack based buffer overflow problem as follows, is it secure now? why? Are there any other issues within the function's implementation below? Explain your reasoning.
int bof(char *str, int size)
{
char *buffer = (char *) malloc(size);
strcpy(buffer, str);
return 1;
}
7. Write a program that will create a dynamically created 1D array of length n (given by the user) and store first n odd numbers in it. Try printing the size of the array using size of() function. Are you satisfied with the result of size of() function? If no, explain why?
need the solve in c++
Chapter 5 Solutions
Computer Systems: A Programmer's Perspective (3rd Edition)
Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Similar questions
- Implement the following function, without using any data structure. /* Given two vectors of chars, check if the two vectors are permutations of each other, i.e., they contains same values, in same or different order.e.g., V1=[‘a’,’b’,’a’] and V2=[‘b’,’a’,’a’] stores same multi-set of data points: i.e., both contains two ‘a’, and one ‘b’. e.g., V3=[‘a’,’c’,’t’,’a’] and V4=[‘a’,’c’,’t’] are not same multi-set. V3 contains two ‘a’s, while V4 has only one ‘a’. Note: when considering multiset, the number of occurrences matters. @param list1, list2: two vectors of chars @pre: list1, list2 have been initialized @post: return true if list1 and list2 stores same values (in same or different order); return false, if not. */ bool SameMultiSet (vector<char> list1, vector<char> list2)arrow_forwardWrite a c++ code that swaps two input integers using pointers. a. In the main function. b. By creating a new function called swap. Write a c++ code that takes from the user the number of integers that they want to input, then takes the integers as input into a dynamic array and outputs the average of the numbers in the array. Write a c++ program that takes from the user an integer and creates a dynamic array with the size of that integer, then calls a function called setVal that sets each element as 2 to the power of index (the powers of 2), then a function called disp that displays the elements comma separated. For example, if the user enters 5, the out should be: 1,2,4,8,16arrow_forwardWrite a Python function def isSubArray(A,B) which takes two arrays and returns True if the first array is a (contiguous) subarray of the second array, otherwise it returns False. You may solve this problem using recursion or iteration or a mixture of recursion and iteration. For an array to be a subarray of another, it must occur entirely within the other one without other elements in between. For example: [31,7,25] is a subarray of [10,20,26,31,7,25,40,9] [26,31,25,40] is not a subarray of [10,20,26,31,7,25,40,9] A good way of solving this problem is to make use of an auxiliary function that takes two arrays and returns True if the contents of the first array occur at the front of the second array, otherwise it returns False. Then, A is a subarray of B if it occurs at the front of B, or at the front of B[1:], or at the front of B[2:], etc. Note you should not use A == B for arrays.arrow_forward
- I am learning C for a class I am taking and a homework assignment asks us to makes a list of integers, divides the list into a number of segments, and displays each segment in reverse order. We need to use the function malloc to dynamically allocate locations for variables a and b. The full assignment is below. I am not too familiar with C and I don't know how to split the list into two arrays.arrow_forwardSomeone tries to fix the stack based buffer overflow problem as follows, is it secure now? why? Are there any other issues within the function's implementation below? int bof(char *str, int size) { char *buffer = (char *) malloc(size); strcpy(buffer, str); return 1; }arrow_forwardPlease Help In JAVA Here is the skeleton of a code for insertion sorting in a functional language. You have to add right lines of codes for the language you choose (C, C++, C#, JAVA etc,). The following sample is for C++ (define (insert L M) (if (null? L) M (if (null? M) L (if (< (car L) (car M)) (cons (car L) (insert (cdr L) M)) (cons (car M) (insert (cdr M) L)))))) ;; Exp. (insertionsort '(4 2 10 3 -1 5)) ==> (-1 2 3 4 5 10)(define (insertionsort L) (if (null? L) '() (insert (list (car L)) (insertionsort (cdr L))))) (define (random-list n) (unless (exact-nonnegative-integer? n) (raise-argument-error 'make-list "exact-nonnegative-integer?" 0 n)) (let loop ([n n] [r '()]) (if (zero? n) r (loop (sub1 n) (cons (random 2147483647) r))))) Sample function call:(insertionsort (random-list 10000)) Hint: most languages have some function to determine the runtime of functionsarrow_forward
- Write a function in c that reads real (fractional) numbers, ?1, ?2, … , ?? from the keyboard into an array of N, starting from index 0. The numbers are read after a prompt.arrow_forwardWrite a Menu Driven C++ program that creates one-dimensional array arr[] and initialize it with user. Theprogram should do following Tasks using Menu, the menu operations are implemented using functions:a) Write a function Count(), that counts the occurrences of x (a number) in arr[].b) Write a function Partition(), that take the first element of the array x and put x in a position suchthat all smaller elements (smaller than x) are before x, and put all greater elements (greaterthan x) after x.c) Write a function next_XOR(),the count of elements which are equal to the XOR of the next twoelements.d) Write a function Duplicates(),which calculated the frequencies of all the elements and displaythem.e) Write a function Circular(),which replace every element of the array by the sum of next twoconsecutive elements in a circular manner i.e. arr[0] = arr[1] + arr[2], arr[1] = arr[2] + arr[3],... arr[n – 1] = arr[0] + arr[1].f) Write a function Search(), takes an array and element to search in…arrow_forward12. Consider the recursive function int gcd( int a, int b) int gcd( int a, int b){ if (b > a) return gcd(b,a); if ( b == 0 ) return a; return gcd( b, a% b); } How many invocation (calls) of the gcd() function will be made by the call gcd(72, 30)?arrow_forward
- In C, write a function that gets 3 pointers int* a, int* b, int* c, and rotates the values in their addresses to the left. That is, a gets the value of b, b gets the value of c, and c gets the value of a. void rotate3 (int* a, int* b, int* c); For example, if we have int x=1, y=2, z=3, then after calling rotate3 (&x, &y, &z) we should have x==2, y==3, and z==1. if we have int x=7, y=1, z=6, then after calling rotate3 (&x, &y, &z) we should have x==1, y==6, and z==7.arrow_forwardUsing only getchar from stdio.h along with the standard operators, create a program in c language where: -Initialize a multidimensional array words, where the size of the first dimension is MAXWORDS and the size of the second dimension is MAXLEN. -Write lines of code which takes an input stream of characters (max of 1000 characteres) from the user using getchar, until the user triggers the end of file.-Create three arrays of pointers p1[], p2[], p3[], where each element of these arrays point to a string.arrow_forwardI'm having a hard time seeing the problem with this buffer overflow problem can someone please elaborate if its secure or not, and if there are any other issues with the implementation in the problem? Someone tries to fix the stack based buffer overflow problem as follows, is it secure now? why? Are there any other issues within the function's implementation below? Explain your reasoning. int bof(char *str, int size) { char *buffer = (char *) malloc(size); strcpy(buffer, str); return 1; }arrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning