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
Question
Chapter 4, Problem 4.48HW
Program Plan Intro
Given Y86-64 code:
.pos 0
irmovq stack, %rsp
call main
halt
.align 8
data:
.quad 0x0000000000000004
.quad 0x0000000000000003
.quad 0x0000000000000002
data_end:
.quad 0x0000000000000001
main:
irmovq data,%rdi
irmovq data_end,%rsi
call ysBubbleP
ret
ysBubbleP:
jmp L2
L4:
mrmovq 8(%rax), %r9
mrmovq (%rax), %r10
rrmovq %r9, %r8
subq %r10, %r8
jge L3
rmmovq %r10, 8(%rax)
rmmovq %r9, (%rax)
L3:
irmovq $8, %r8
addq %r8, %rax
jmp L5
L6:
rrmovq %rdi, %rax
L5:
rrmovq %rsi, %r8
subq %rax, %r8
jg L4
irmovq $8, %r8
subq %r8, %rsi
L2:
rrmovq %rsi, %r8
subq %rdi, %r8
jg L6
ret
.pos 0x200
stack:
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:
Unary and Binary Operations:
- The details of unary operations includes:
- The single operand functions as both source as well as destination.
- It can either be a memory location or a register.
- The instruction “incq” causes 8 byte element on stack top to be incremented.
- The instruction “decq” causes 8 byte element on stack top to be decremented.
- The details of binary operations includes:
- The first operand denotes the source.
- The second operand works as both source as well as destination.
- The first operand can either be an immediate value, memory location or register.
- The second operand can either be a register or a memory location.
Jump Instruction:
- The “jump” instruction causes execution to switch to an entirely new position in program.
- The “label” indicates jump destinations in assembly code.
- The “je” instruction denotes “jump if equal” or “jump if zero”.
- The comparison operation is performed.
- If result of comparison is either equal or zero, then jump operation takes place.
- The “ja” instruction denotes “jump if above”.
- The comparison operation is performed.
- If result of comparison is greater, then jump operation takes place.
- The “pop” instruction resumes execution of jump instruction.
- The “jmpq” instruction jumps to given address. It denotes a direct jump.
Expert Solution & Answer
Want to see the full answer?
Check out a sample textbook solutionStudents have asked these similar questions
Consider the following code fragment.Trace the code and for each iteration of the while loop write the updated values of x and y. What does this code finally print out on lines 10 and 11?
PLEASE ASSIST ON THE BELOW REVIEW
Before the user can read an email, they have to see the emails. To achieve this, your program should first of all determine which emails have not been read and return that to the user. Then the user can choose. The emails should be numbered so that the user can provide the number as the index. Consider using the enumerate function to achieve this.
I realise that there are no emails within the email box , kindly add some dummy emails in this list so that at least there is something within the inbox list.Do the same for marks as spam. Present to the user all the emails that have not been marked as spam for the user to mark as spam.Most importantly, your code is not well indented. Try to work on your indentation as it makes your code easier to read and the logic easier to follow. Indentation is key in python to define the blocks of statements. The number of spaces must be uniform in a block of code. It is preferred to use four whitespaces instead of tabs…
Experiment 1: IMPLEMENTATION OF CAESAR CIPHER
Objective:
To implement the simple substitution technique named Caesar cipher using C+ language.
Theory:
To enerypt a message with a Caesar cipher, each letter in the message is changed using a
simple rule: shift by three. Each letter of the message is shifted a fixed distance (3 for
example) down the alphabet, A becomes D, B becomes E, and so on. For the last letters,
we can think of alphabet as a circle and "wrap around", W becomes Z. X becomes A, Y
becomes B, and Z becomes C. To change a message back, cach letter is replaced by the
one three before it.
Example
ABCDEFGHIJKLMNOPQRSTUVWXYZ
t t t t t t t t ttt t t t t t t tt t t t t t t ft
DEFGHIJKLMNOPQRSTUVW XY Z ABc)
digorithm
STEP-1: Read the plain text from the user.
STEP-2: Read the key value from the user.
STEP-3: If the key is positive then encrypt the text by adding the key with each character
in the plain text.
STEP-4: Else subtract the key from the plain text.
STEP-5: Display the…
Chapter 4 Solutions
Computer Systems: A Programmer's Perspective (3rd Edition)
Ch. 4.1 - Prob. 4.1PPCh. 4.1 - Prob. 4.2PPCh. 4.1 - Prob. 4.3PPCh. 4.1 - Prob. 4.4PPCh. 4.1 - Prob. 4.5PPCh. 4.1 - Prob. 4.6PPCh. 4.1 - Prob. 4.7PPCh. 4.1 - Prob. 4.8PPCh. 4.2 - Practice Problem 4.9 (solution page 484) Write an...Ch. 4.2 - Prob. 4.10PP
Ch. 4.2 - Prob. 4.11PPCh. 4.2 - Prob. 4.12PPCh. 4.3 - Prob. 4.13PPCh. 4.3 - Prob. 4.14PPCh. 4.3 - Prob. 4.15PPCh. 4.3 - Prob. 4.16PPCh. 4.3 - Prob. 4.17PPCh. 4.3 - Prob. 4.18PPCh. 4.3 - Prob. 4.19PPCh. 4.3 - Prob. 4.20PPCh. 4.3 - Prob. 4.21PPCh. 4.3 - Prob. 4.22PPCh. 4.3 - Prob. 4.23PPCh. 4.3 - Prob. 4.24PPCh. 4.3 - Prob. 4.25PPCh. 4.3 - Prob. 4.26PPCh. 4.3 - Prob. 4.27PPCh. 4.4 - Prob. 4.28PPCh. 4.4 - Prob. 4.29PPCh. 4.5 - Prob. 4.30PPCh. 4.5 - Prob. 4.31PPCh. 4.5 - Prob. 4.32PPCh. 4.5 - Prob. 4.33PPCh. 4.5 - Prob. 4.34PPCh. 4.5 - Prob. 4.35PPCh. 4.5 - Prob. 4.36PPCh. 4.5 - Prob. 4.37PPCh. 4.5 - Prob. 4.38PPCh. 4.5 - Prob. 4.39PPCh. 4.5 - Prob. 4.40PPCh. 4.5 - Prob. 4.41PPCh. 4.5 - Prob. 4.42PPCh. 4.5 - Prob. 4.43PPCh. 4.5 - Prob. 4.44PPCh. 4 - Prob. 4.45HWCh. 4 - Prob. 4.46HWCh. 4 - Prob. 4.47HWCh. 4 - Prob. 4.48HWCh. 4 - Modify the code you wrote for Problem 4.47 to...Ch. 4 - In Section 3.6.8, we saw that a common way to...Ch. 4 - Prob. 4.51HWCh. 4 - The file seq-full.hcl contains the HCL description...Ch. 4 - Prob. 4.53HWCh. 4 - The file pie=full. hcl contains a copy of the PIPE...Ch. 4 - Prob. 4.55HWCh. 4 - Prob. 4.56HWCh. 4 - Prob. 4.57HWCh. 4 - Our pipelined design is a bit unrealistic in that...Ch. 4 - Prob. 4.59HW
Knowledge Booster
Similar questions
- I am very confused on how to answer this and any thing will help. Create a function that accepts a single list. Inside the function, have nested for loops (a for loop inside a for loop). The outer for loop iterates through every item in the list. The inner loop iterates through every subitem in item, and prints it. Test the function by passing it the list [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ].arrow_forwardwrite in assebly language using lc3 simulator LC3 simulator-https://wchargin.com/lc3web/ Write a program that implements a for loop that adds 5 to R3 every iteration a. Increment a register by 1 in every cycle of the loop to keep track of the loop iterationsb. Store the maximum amount of iterations that the loop can have in a memory locationc. Your for loop should start at 0 iterations (i.e. i = 0) and stop looping once the maximum is reached Psuedo code: .ORIG x3000 ; Step 1: Clear R3 ; Step 2: Clear R0 ; Step 3: Load the value of MAX into R1 (maximum amount of iterations) ; Step 4: Take the two's compliment of R1 (2 instructions!) loop ; Step 5: Add #5 to R3 (result) ; Step 6: Increment R0 (loop iteration counter) ; Step 7: Add R1 and R0 and put the result in R2 (Since we did a 2's complement on R1, we are essentially subtracting R1 from R0) ; Step 8: Branch if negative back to loop (this means that R1 > R0 and we need to keep looping) ; Step 9: Halt CPU…arrow_forwardRun my function on {(1,4),(0,6),(3,5),(2,9),(7,8)}. Is the output what you expect? Find the problem and fix it, writing a correct version of the function. Again, use the same function name, i.e., count_crossings_and_nestings. Demonstrate that the new version works by testing it on the example provided. Now write a well-documented version of your function count_crossings_and_nestings. Add a document string and plenty of comments.arrow_forward
- (B2). Implement a randomized Skip-List with operations Insert(), Delete() and Search(). Your program should read from the input file just like in (BI). Print out the skip-list using the format given below 16 16 71 91 2 16 71 89 91 2 10 15 16 31 71 86 89 91 96 27-10-15- 86 89 a 96arrow_forwardThe Fibonacci sequence begins with 0 and then 1 follows. All subsequent values are the sum of the previous two, ex: 0, 1, 1, 2, 3, 5, 8, 13. Complete the fibonacci() function, which has an index n as parameter and returns the nth value in the sequence. Any negative index values should return -1. Ex: If the input is: 7 the output is: fibonacci (7) is 13 Note: Use a for loop and DO NOT use recursion.arrow_forwardThe Fibonacci sequence begins with 0 and then 1 follows. All subsequent values are the sum of the previous two, ex: 0, 1, 1, 2, 3, 5, 8, 13. Complete the fibonacci() function, which has an index n as parameter and returns the nth value in the sequence. Any negative index values should return -1. Ex: If the input is: 7 the output is: fibonacci(7) is 13 Note: Use a for loop and DO NOT use recursion. python def fibonacci(n): # Type your code here. if __name__ == '__main__': start_num = int(input()) print('fibonacci({}) is {}'.format(start_num, fibonacci(start_num)))arrow_forward
- The Fibonacci sequence begins with 0 and then 1 follows. All subsequent values are the sum of the previous two, ex: 0, 1, 1, 2, 3, 5, 8, 13. Complete the fibonacci() function, which has an index n as parameter and returns the nth value in the sequence. Any negative index values should return -1. Ex: If the input is: 7 the output is: fibonacci (7) is 13 Note: Use a for loop and DO NOT use recursion. 461710.3116374.qx3zqy7 LAB ACTIVITY 1 def fibonacci(n): 1234567 4 7.34.1: LAB: Fibonacci sequence 6 #Type your code here. 5 if __name__ start_num = '__main__': int(input()) main.py print(f'fibonacci ({start_num}) is {fibonacci (start_num)}') 0/10 Load default template...arrow_forwardWrite these in Pseudocode #1a – In pseudocode, write a call to a function that passes 1 Integer variable and 1 Integer array, and saves a Boolean value in return. #1b – In pseudocode, write the function that accepts 1 Integer and 1 Integer array and returns a Boolean. In the function, search the Integer array with a for-loop, and if the Integer parameter is found in the array, return false. If the Integer parameter is not found, return true. #2a – In pseudocode, write a call to a module that passes 1 Integer variable, 1 Real variable, 1 String constant, and 1 String literal as arguments. #2b – In pseudocode, write the module header that accepts 1 Integer, 1 Real, and 2 Strings as parameters. #3 – This pseudocode has multiple problems. Fix the calling statement and the definition below so that the routine accepts 3 grades as parameters and returns the average into a variable.…arrow_forwardThe following requirments that weren't mentioned for solving the following Python Code below: The provided code for alphabet, test_dups, test_miss, and histogram. Your implementation of the has_duplicates function. A loop that outputs duplicate information for each string in test_dups. Your implementation of the missing_letters function. A loop that outputs missing letters for each string in test_miss. Write a function called missing_letters that takes a string parameter and returns a new string with all the letters of the alphabet that are not in the argument string. The letters in the returned string should be in alphabetical order. Your implementation should use a histogram from the histogram function. It should also use the global variable alphabet. It should use this global variable directly, not through an argument or a local copy. It should loop over the letters in alphabet to determine which are missing from the input parameter. The function missing_letters should…arrow_forward
- it is NOT allowed to use any library orpackage function to directly generate random numbers that follow Poisson Distribution,Exponential Distribution, or any other advanced distributions. --- Writing such randomnumber generators is a main purpose of this assignment.The only exception that you are allowed to directly use is the ones that generate randomnumbers that follow a Uniform Distribution. E.g., rand() in C.arrow_forwardThe Fibonacci sequence begins with 0 and then 1 follows. All subsequent values are the sum of the previous two, for example: 0, 1, 1, 2, 3, 5, 8, 13. Complete the Fibonacci() function, which has an index, n, as parameter and returns the nth value in the sequence. Any negative index values should return -1. Ex: If the input is: 7 the output is: Fibonacci(7) is 13 Note: Use a for loop and DO NOT use recursion.arrow_forwardI 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_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