CS350 Intro Computer Systems Homework

Homework 8 on Essential Steps of Instruction Execution

  1. For the 11 instructions shown below, fill the table with the numbers necessary to execute each instruction. See the figure attached for numbers associated with the simple computer. See the sample instruction addq %rax,%rbx. List numbers in the order in which they flow. You may ignore numbers 1,2,6,7,8,9,10,13,44,45 for this homework. Assume PC is filled with a correct address for fetching.

    InstructionFetchDecodeExecuteMemoryWrite Back
    addq %rax,%rbx11,12,14,15,16,17,195,21,22,26,2731,32,33,34,35,36,37,41---38,22
    rrmovq %rax,%rbx
    irmovq 5,%rbx
    mrmovq 5(%rdx),%rax
    rmmovq %rax,5(%rdx)
    push %rax
    pop %rax
    jne loop
    call func
    ret
    cmovne %rax,%rbx

  2. Assuming the following values, fill the table below with values. If no applicable, leave it blank. See Figures 4.2 to 4.4 for icode, ifun, and register assignment.

    InstructionicodeifunrArBvalCvalAvalBdstEdstMsrcAvalEvalMCnd
    addq %rax,%rbx6003
    rrmovq %rax,%rbx
    irmovq 5,%rbx
    mrmovq 5(%rbx),%rax
    rmmovq %rax,5(%rdx)
    push %rax
    pop %rax
    jmp loop
    call func
    ret
    cmove %rax,%rbx