Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Modify the single-cycle datapath by implementing the push instruction. The instr

ID: 3854113 • Letter: M

Question

Modify the single-cycle datapath by implementing the push instruction. The instruction below pushes register t0 on the stack. Notice that the rs field encodes register sp and that the immediate value is equal to 4.

The stack in MIPS is a full descending stack. Therefore, in the push operation, the register is written to memory address (sp-4), then the value of (sp-4) is written to register sp.

push $t0

unique

sp

t0

4

opcode

rs

rt

immediate

a) Explain the functional form of the instruction based on the register names.


b) Explain the functional form based on the instruction fields.

c) Draw the changes on the datapath diagram and highlight them so they're visible

d) Give the values of the control signals

unique

sp

t0

4

opcode

rs

rt

immediate

Explanation / Answer

Core components

Core components can be used with all files (audio, video, tinkerforge, etc.) in the graph editor.

core:container

Component that can contain other components. Use core|audio|video:container:in|out to add ports.

core:custom

Base for core (not audio, video, etc.) components. No ports or controls by default. See coding guide.

core:property

Stores a property, and sends it from its output port whenever a new value is received. Also sends its value when the root container starts (eg. audio starts playing).

core:start-trigger

Output a signal (empty value) when the root container starts.

core:tracker

Tracker sequencing component, supporting 8 channels and multiple patterns. The trigger port would normally be connected to a core:timing:timer or audio:clock component.

Use Edit patterns from the component popup menu to open the pattern table editor. Use Save (CTRL-S) to update the component.

core:variable

Stores a value and sends it whenever triggered. Unlike core:property it does not automatically send on each update.

core:array:iterator

Loops through an array of arguments, jumping to the next each time it is triggered. Can be set to jump a (random) number of elements ahead, determined by min-skip and max-skip. Can loop continuously forwards, or ping-pong back and forth through the array.

If the array is empty, an empty string will be sent instead.

core:array:random

Stores an array (list) of arguments, and selects and sends one randomly when triggered.

If the array is empty, an empty string will be sent instead.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote