Computer Systems: A Programmer's Perspective (3rd Edition)
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
bartleby

Concept explainers

bartleby

Videos

Textbook Question
Book Icon
Chapter 3, Problem 3.58HW

For a function with prototype

long decoda2(long x, long y, long z);

GCC generates the following assembly code:

Chapter 3, Problem 3.58HW, For a function with prototype long decoda2(long x, long y, long z); GCC generates the following

Parameters x, y, and z are passed in registers %rdi, %rsi, and %rdx. The code stores the return value in register %rax.

  Write C code for decode2 that will have an effect equivalent to the assembly code shown.

Expert Solution & Answer
Check Mark

Explanation of Solution

Given assembly code:

x in %rdi, y in %rsi and z in %rdx

decode2:

subq %rdx, %rsi

imulq %rsi, %rdi

movq %rsi, %rax

salq $63, %rax

sarq $63, %rax

xorq %rdi, %rax

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.

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.
    • 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.

Corresponding C code:

// Define method decode

long decode(long x, long y, long z)

{

// Declare variable

long tmp = y - z;

//Return

return (tmp * x)^(tmp << 63 >> 63);

}

Explanation:

  • The register “%rdi” has value for “x”, register “%rsi” has value for “y” and register “%rdx” has value for “z”.
  • The details of assembly code is shown below:
    • The instruction “subq %rdx, %rsi” performs operation “y - z” and stores result in register “%rsi”.
      • The statement “long tmp = y - z” corresponds to C code.
    •  The instruction “imulq %rsi, %rdi” multiplies result of operation with “x” and stores result in register “%rdi”.
      • The statement “(tmp * x)” corresponds to C code.
    • The instruction “movq %rsi, %rax” moves value in register “%rsi” to register “%rax”.
    • The instruction “salq $63, %rax” performs left shift on value in register “%rax”.
      • The statement “tmp << 63” corresponds to C code.
    • The instruction “sarq $63, %rax” performs right shift on value in register “%rax”.
      • The statement “tmp << 63 >> 63” corresponds to C code.
    • The instruction “xorq %rdi, %rax” performs “XOR” operation on values in registers “%rax” and “%rdi”.
      • The statement “return (tmp * x)^(tmp << 63 >> 63)” corresponds to C statement.

Want to see more full solutions like this?

Subscribe now to access step-by-step solutions to millions of textbook problems written by subject matter experts!
Students have asked these similar questions
Consider the data path below for a single cycle 32-bits MIPS processor Assume that we are executing the following instruction lw St1, 48($10) What is the value of the element pointed by arrow number 1 by in hexadecimal? Note that the PC and the content of registers $10 and $t1 are found in bottom left of the figure below Data Memory Select one a. Ox00001724 Ob. 0x00002DE4 Oc 0x000016F4 Od 0x00001720 Oe. 0x00002DEO Clear my choice Rea " Address Content 0x000016EC 0x0000ABOD 0x000016F0 0x00A01245 0x000016F4 0x00001A42 0x000171C 0x0008124F 0x0001720 0x00021345 0x0001724 0x000067AB ALU Ox0001734 0x0000AB35 0x0001738 0x0000FA72 0x0000ABOC ALS 0x000174C Register File and PC $to = 0x000016FO $t1 = 0x000016F4 PC = 0x0000148A0 (Before executing LW)
Consider the data path below for a single cycle 32-bits MIPS processor Assume that we are executing the following instruction SLL S10, $3,4 What is the value of the element pointed by arrow number 1 by in hexadecimal or binary? Note that the PC and the content of registers are found in bottom left of the figure below Address Select one Oa. Ox00000000 Ob. Ob 10011' Oc 0x0000AF00 ® d. 06/01000 Oe. None of the options Of Ox000000BA LEY Content 0x000016EC Dx0000ABOD Data Memory 0x000016F0 0x00A01245 0x000016F4 0x00001A42 Ox000171C 0x0008124 0x0001720 0x00021345 0x0001724 0x000067AB 0x0001734 0x0001738 0x0000A835 0x0000FA72 0x000174C 0x0000AC $63 0x000000BA PC = 0x000FAC04 Register File and PC (Before executing SLL)
Consider the data path below for a single cycle 32-bits MIPS processor Assume that we are executing the following instruction lw $10, 48(S1) What is the value of the element pointed by arrow number 1 by in hexadecimal? Note that the PC and the content of registers $10 and $t1 are found in bottom left of the figure below Select one a. None of the options Ob 0x00014C64 Oc 0x00014CC4 Od 0x00014BA4 Oe. Ox14C1C Of 0x00014C60 Og 0x00014CCO D Data Memory Address Content 0x000016EC 0x0000ABOD 0x000016F0 0x00A01245 0x000016F4 0x00001A42 0x000171C 0x0008124F 0x0001720 0x00021345 0x0001724 0x000067AB 0x0001734 0x0000AB35 0x0001738 0x0000FA72 0x000174C 0x0000ABOC ALU Register File and PC Sto Ox000016F0 St1 = 0x000016F4 PC = 0x00014BA0 (Before executing LW).

Chapter 3 Solutions

Computer Systems: A Programmer's Perspective (3rd Edition)

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

Additional Engineering Textbook Solutions

Find more solutions based on key concepts
What is weld bonding?

Degarmo's Materials And Processes In Manufacturing

What happens when you serialize an object? What happens when you deserialize an object?

Starting Out with Java: From Control Structures through Data Structures (4th Edition) (What's New in Computer Science)

What is the output produced by the following code?

Java: An Introduction to Problem Solving and Programming (8th Edition)

Knowledge Booster
Background pattern image
Computer Science
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
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
Computer Networking: A Top-Down Approach (7th Edi...
Computer Engineering
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:PEARSON
Text book image
Computer Organization and Design MIPS Edition, Fi...
Computer Engineering
ISBN:9780124077263
Author:David A. Patterson, John L. Hennessy
Publisher:Elsevier Science
Text book image
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:9781337569330
Author:Jill West, Tamara Dean, Jean Andrews
Publisher:Cengage Learning
Text book image
Concepts of Database Management
Computer Engineering
ISBN:9781337093422
Author:Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:Cengage Learning
Text book image
Prelude to Programming
Computer Engineering
ISBN:9780133750423
Author:VENIT, Stewart
Publisher:Pearson Education
Text book image
Sc Business Data Communications and Networking, T...
Computer Engineering
ISBN:9781119368830
Author:FITZGERALD
Publisher:WILEY
Computer Fundamentals - Basics for Beginners; Author: Geek's Lesson;https://www.youtube.com/watch?v=eEo_aacpwCw;License: Standard YouTube License, CC-BY