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
Expert Solution & Answer
Chapter 3, Problem 3.60HW
A.
Explanation of Solution
Registers for holding values:
- The parameter “x” is been passed to function in register “%rdi”.
- The parameter “n” is been passed to function in register “%esi”.
- The register “%rax” is initialized to variable “result”...
B.
Explanation of Solution
Initial values of result and mask:
- The instruction “movl $1, %edx” sets value of “mask” to 1...
C.
Explanation of Solution
Test condition for mask:
- The instruction “testq %rdx, %rdx” denotes test condition for “mask”...
D.
Explanation of Solution
Condition to update mask:
- The instruction “salq %cl, %rdx” performs left shift on “mask”...
E.
Explanation of Solution
Condition to update result:
- The instruction “orq %r8, %rax” performs “OR” operation on “result”...
F.
Explanation of Solution
Given assembly code:
long loop(long x, int n)
x in %rdi, n in %esi
loop:
movl %esi, %ecx
movl $1, %edx
movl $0, %eax
jmp .L2
.L3:
movq %rdi, %r8
andq %rdx, %r8
orq %r8, %rax
`salq %cl, %rdx
.L2:
testq %rdx, %rdx
jne .L3
Rep; ret
Load Effective Address:
- The load effective address instruction “leaq” is a variant of “movq” instruction.
- The instruction form reads memory to a register, but memory is not been referenced at all.
- The first operand of instruction is a memory reference; the effective address is been copied to destination.
- The pointers could be generated for later references of memory.
- The common arithmetic operations could be described compactly using this instruction.
- The operand in destination should be a register.
Data movement instructions:
- The different instructions are been grouped as “instruction classes”.
- The instructions in a class performs same operation but with different sizes of operand.
- The “Mov” class denotes data movement instructions that copy data from a source location to a destination.
- The class has 4 instructions that includes:
- movb:
- It copies data from a source location to a destination.
- It denotes an instruction that operates on 1 byte data size.
- movw:
- It copies data from a source location to a destination.
- It denotes an instruction that operates on 2 bytes data size.
- movl:
- It copies data from a source location to a destination.
- It denotes an instruction that operates on 4 bytes data size.
- movq:
- It copies data from a source location to a destination.
- It denotes an instruction that operates on 8 bytes data size.
- movb:
Comparison Instruction:
- The “CMP” instruction sets condition code according to differences of their two operands.
- The working pattern is same as “SUB” instruction but it sets condition code without updating destinations.
- The zero flag is been set if two operands are equal.
- The ordering relations between operands could be determined using other flags.
- The “cmpl” instruction compares values that are double word.
Unary and Binary Operations:
- The details of unary operations includes:
- The single operand functions as both source as well as destination...
Expert Solution & Answer
Want to see the full answer?
Check out a sample textbook solutionStudents have asked these similar questions
It is the compiler's job to associate program variables with registers. Take, for
instance, the assignment statement from our earlier example:
f = (g + h)
(i+j):
The variables f, g, h, i, and j are assigned to the registers X 19, X20, X21, X22,
and X 23, respectively. What is the compiled LEGV8 code?
MIPS Simulator QtSpim: You are to have a complete program in MIPS assembly language that behaves exactly as the included C program. This program contains four functions in addition to the main() one. Your solution must contain all five C routines as they have been coded in the example. Make sure to run the program in MIPS and show the same output on MIPS as well to make sure there are no errors. Below is the five C routines and attached is the image of what the output must print out on QtSpim.
#include <stdio.h>
int getMax(int arr[], int n){int mx = arr[0];for (int i = 1; i < n; i++)if (arr[i] > mx)mx = arr[i];return mx;}void countSort(int arr[], int n, int exp){int output[n];int i, count[10] = { 0 };for (i = 0; i < n; i++)count[(arr[i] / exp) % 10]++;for (i = 1; i < 10; i++)count[i] += count[i - 1];for (i = n - 1; i >= 0; i--) {output[count[(arr[i] / exp) % 10] - 1] = arr[i];count[(arr[i] / exp) % 10]--;}for (i = 0; i < n; i++)arr[i] = output[i];}void…
This is a program that needs to be written in AssemblyGOAL: Write a PEP/8 machine language simulator
1. Use an array to represent the memory.
2. Use variables or arrays for the PEP8 registers. I recommendputting it all into a structure. I also recommend using an array of16 bit values for A, X, PC, SP so that you can use the r bit fromthe instructions to point directly to A or X. You do NOThave toinclude the Status bits.
3. Use unions of structures to break up the registers andinstructions into the correct bits (for example, use a structurethat can be unioned to break up the 8 bit specifier into thefollowing bit combos (4, 1, 3), (5, 3), (7, 1), (8). This willallow you to instantly extract the instruction, register andaddressing modes from each instruction. Also use a union to breakup the 16 bit operand into two 8 bit values.
4. Have the instructions be inputted either through the commandline or better yet, through a file, in the following format foreach instruction:
a. 6 Hexadecimal…
Chapter 3 Solutions
Computer Systems: A Programmer's Perspective (3rd Edition)
Ch. 3.4 - Prob. 3.1PPCh. 3.4 - Prob. 3.2PPCh. 3.4 - Prob. 3.3PPCh. 3.4 - Prob. 3.4PPCh. 3.4 - Prob. 3.5PPCh. 3.5 - Prob. 3.6PPCh. 3.5 - Prob. 3.7PPCh. 3.5 - Prob. 3.8PPCh. 3.5 - Prob. 3.9PPCh. 3.5 - Prob. 3.10PP
Ch. 3.5 - Prob. 3.11PPCh. 3.5 - Prob. 3.12PPCh. 3.6 - Prob. 3.13PPCh. 3.6 - Prob. 3.14PPCh. 3.6 - Prob. 3.15PPCh. 3.6 - Prob. 3.16PPCh. 3.6 - Practice Problem 3.17 (solution page 331) An...Ch. 3.6 - Practice Problem 3.18 (solution page 332) Starting...Ch. 3.6 - Prob. 3.19PPCh. 3.6 - Prob. 3.20PPCh. 3.6 - Prob. 3.21PPCh. 3.6 - Prob. 3.22PPCh. 3.6 - Prob. 3.23PPCh. 3.6 - Practice Problem 3.24 (solution page 335) For C...Ch. 3.6 - Prob. 3.25PPCh. 3.6 - Prob. 3.26PPCh. 3.6 - Practice Problem 3.27 (solution page 336) Write...Ch. 3.6 - Prob. 3.28PPCh. 3.6 - Prob. 3.29PPCh. 3.6 - Practice Problem 3.30 (solution page 338) In the C...Ch. 3.6 - Prob. 3.31PPCh. 3.7 - Prob. 3.32PPCh. 3.7 - Prob. 3.33PPCh. 3.7 - Prob. 3.34PPCh. 3.7 - Prob. 3.35PPCh. 3.8 - Prob. 3.36PPCh. 3.8 - Prob. 3.37PPCh. 3.8 - Prob. 3.38PPCh. 3.8 - Prob. 3.39PPCh. 3.8 - Prob. 3.40PPCh. 3.9 - Prob. 3.41PPCh. 3.9 - Prob. 3.42PPCh. 3.9 - Practice Problem 3.43 (solution page 344) Suppose...Ch. 3.9 - Prob. 3.44PPCh. 3.9 - Prob. 3.45PPCh. 3.10 - Prob. 3.46PPCh. 3.10 - Prob. 3.47PPCh. 3.10 - Prob. 3.48PPCh. 3.10 - Prob. 3.49PPCh. 3.11 - Practice Problem 3.50 (solution page 347) For the...Ch. 3.11 - Prob. 3.51PPCh. 3.11 - Prob. 3.52PPCh. 3.11 - Practice Problem 3.52 (solution page 348) For the...Ch. 3.11 - Practice Problem 3.54 (solution page 349) Function...Ch. 3.11 - Prob. 3.55PPCh. 3.11 - Prob. 3.56PPCh. 3.11 - Practice Problem 3.57 (solution page 350) Function...Ch. 3 - For a function with prototype long decoda2(long x,...Ch. 3 - The following code computes the 128-bit product of...Ch. 3 - Prob. 3.60HWCh. 3 - In Section 3.6.6, we examined the following code...Ch. 3 - The code that follows shows an example of...Ch. 3 - This problem will give you a chance to reverb...Ch. 3 - Consider the following source code, where R, S,...Ch. 3 - The following code transposes the elements of an M...Ch. 3 - Prob. 3.66HWCh. 3 - For this exercise, we will examine the code...Ch. 3 - Prob. 3.68HWCh. 3 - Prob. 3.69HWCh. 3 - Consider the following union declaration: This...Ch. 3 - Prob. 3.71HWCh. 3 - Prob. 3.72HWCh. 3 - Prob. 3.73HWCh. 3 - Prob. 3.74HWCh. 3 - Prob. 3.75HW
Knowledge Booster
Similar questions
- The following instruction set is supported by a simple processor, which is similar to what we discussed in the class, with a few new instructions added. The format of most instructions is defined as follows. bits 15:14 13:10 9 8:6 5:3 2:0 field unused opcode w srcl src2 dst where the fields are defined as follows. opcode : operation to be performed by the processor write back ALU output to register file (1= yes, 0 = no) address of the first ALU operand in the register file address of the second ALU operand in the register file address in the register file where the output is written w: srcl: src2: dst: For opcodes BEQ, BLEZ and JUMP, the 6 least significant bits (5:0) give an address in the instruction memory, which is byte-addressed. The opcode HALT has all operand bits (9:0) being 0. When an instruction has only two operands, the field for the unused operand is filled with 0-bits. For example, bits (5:3) for SLL are all zero because src2 is not used. The opcode and meaning of these…arrow_forwardGive solution in C ++ Language. Write logic also which is applicable in this question. First read the instruction and hints then solve the question. Hints and Instructions : First read the number of rows and numbers of columns for the grid of information. Store them in Array (2D) These values are then followed by the elevation values, in row order. The maximum size of the grid is 5 rows by 5 columns. Then extend it to 10x10. Forget the file handling part. Just randomly fill in data in 2d array. And then try to find maximum of the array while keeping in mind the conditions mentioned. Don't store date or file in grid.text.arrow_forwardConvert the following function in Python code into MIPS code. Note that 2 integers a and b are passed as arguments to the function and result is returned back to the calling execution unit. 1. def Problem3 (a, b): # Initialize sum sum = 0 for i in range(a, b): sum = sum+ 2 return (sum)arrow_forward
- please use python language instruction- 1. Read the code from line 123 to line 137. This is the basically the selection. Remember how we talk about there are certain things about controlling population? Please explain how we make sure that the population, when going through a selection, does not shrink over generation. You may simply explain this as comments in a Python file as opposed to in a Word file:. Note that the code from line 123 to line 137 is divided into two small blocks. Use that as 2. The code we've just examined has one functionality of selection. So, we really should wrap that into one function nanied 'select'. Note that in this file there is no class named 'Population'. So, you should make this function a static method that belongs to the class named 'Individual', or a simple function that resides outside the class named 'Individual'. Please think about what the inputs and output of this function are before you start coding. Once you have created the…arrow_forwardDraw a memory diagram for the following codearrow_forwardLocal Variables and Parameters Here is the entire assembly code for the body of a function (but excluding the activation record set-up code and the return statement of the function) in a C program. ADD R7, R4, 5 LDR R7, R7, He STR R7, R5, ue LDR R7, R5, He STR R7, R5, H-1 ADD R7, R4, 14 LDR R7, R7, ne STR R7, R5, ne And here is the entire global data section of that program GLOBAL_DATA_START g .FILL 12 L1_activi .FILL 1c3_L1_activi f .FILL 1c3_t L5_activi .FILL lc3_L5_activi L7_activi .FILL 13 L6_activi .FILL H6 L4_activi .FILL 184 L3_activi .FILL 1 L2_activi .FILL 45 .END How many lines of C code does the body of this function have? How many local variables does this function have? What is the value in the first local variable just before the function returns? If the function has two parameters, how many memory cells does the activation record for this function occupy?arrow_forward
- The cos(x) function is available once cmath has been declared in the preprocessor. True Falsearrow_forwardTranslate the following C++ program into MAL (MIPS Assembly Langage). Your solution should have all necessary data allocations, input/output instructions etc, and must compile and run correctly in spim. Make sure your loops are efficient (i.e., they should not have unnecessary branches). Given: max is in $s0, num is in $s1, i is in $s2. (These variables should not be allocated in the .data section.) You may use any other $s? or $t? registers as temporaries. #include using std::cin; using std::cout; int main() { int max, num, i;arrow_forwardDefine a problem with user input, user output, Pointers, and Pointer Arithmetic. If no output explain the reason why and what you are going to do make sure it does not happen again aka learning from your mistakes.Problem:Design:Code:Output:arrow_forward
- Language is assembly. You need this to implement a subroutine (function) that performs individual multiplications of two 4-bit numbers. Numbers A and B are passed to the function, adding A to itself by B times by the given pseudo code. Insert the program for “multiplication” and the output of the programarrow_forwardYou must complete this in Python and the programs should not take any command-line arguments. You also need to make sure your programs will compile and run in at least a Linux environment. In this problem, you need to implement operation bit encoding for Assembly instructions. Given a line of text, your program should check whether it is a valid Assembly instruction type. If it is, your program should print out the opcode and optype of that instruction type; if the line of text is not exactly a valid Assembly instruction, your program should skip it and move to the next line of input without printing anything. Input Format The input to the program will consist of some number of lines. Each line contains some text, either a valid Assembly instruction type (with no extra whitespace or other characters, e.g. READ on a line by itself) or some other text. Constraints There are no specific constraints on the length or number of lines. They will be in a reasonable limit, as demonstrated by…arrow_forwardBelow C-code has a for loop which will repeat 1000 times of the operation. This code will be running on very simple machine. Change the code to reduce the number of branch instructions. You can have up to 5 lines (statements) within the for loop. What is the number of branch operations before and after? for (i=0; i<1000; i++){ y[i] = w * x[i] + b[i]; }arrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology Ptr
C++ for Engineers and Scientists
Computer Science
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Course Technology Ptr