Write the following C code sequence in MIPS/risc-v assembly: intj, N|41; for (int i=0; i < 3; i++) { j = j + Nlil; } Fir
Posted: Fri May 20, 2022 5:01 pm
First, allocate space in memory for j and N and use the
appropriate pseudo instructions to load the variable and array base
addresses into registers t0 and t1 respectively. j should hold 0
and N, 1,2,3,4. Use additional temporaries, t2, t3, etc. in order,
as necessary. Note that | | are used instead of brackets for
array indices since brackets are interpreted by canvas as answer
holders.
Don’t use multiplication instructions - they are
unnecessary. Don’t use the Jump instruction,
just an appropriate branch at the end.
Each instruction has three or four fields: field1 field2 field3
field4; for example sll r1, r2, 3
Allocate j, N:
[ Select ]
[".align", "", ".space", "", ".data", ".text"]
j: [ Select ]
[".word", ".space", ".byte"]
[ Select ]
["0.0", "zero", "0"]
N: [ Select ]
[".byte", ".word", ".space"]
[ Select ] ["1,
2, 3, 4", "1.0, 2.0,3.0,4.0", "1;2;3;4"]
Begin program:
[ Select ]
[".text", ".space", ".align", ".data"] v
Instruction 1:
field1: [ Select ] ["la", "li",
"lw"] field2: [ Select ] ["j",
"t0", "0"]
field3: [ Select ] ["0", "t1",
"j"]
Instruction 2
field1: [ Select ] ["lb", "la",
"lw"] field2: [ Select ]
["1,2,3,4", "N", "j", "t1"]
field3: [ Select ] ["1, 2, 3, 4",
"t1", "N"]
Instruction 3
field1: [ Select ] ["li", "lw",
"lidx", "la"] field2: [ Select ]
["0", "t1", "t2"]
field3: [ Select ] ["r0", "t2",
"0"] #index
Instruction 4
field1: [ Select ] ["la", "li",
"lw"] field2: [ Select ] ["i",
"t3", "4"]
field3: [ Select ] ["t3", "r3",
"3"] #bound
Instruction 5
field0: [ Select ] ["loop", "exit",
"else", "then"] field1: [ Select ]
["lw", "li", "la"] field2: [
Select ] ["t0", "4", "t4"]
field3: [ Select ] ["0", "1",
"8"] field4: [ Select ] ["M",
"t1", "t0"]
Instruction 6
field1: [ Select ] ["lw", "sw",
"la"] field2: [ Select ]
["t4", "t0", "t5"] field3: [ Select ]
["0", "t4", "4"] field4: [
Select ] ["t5", "t0", "0"]
Instruction 7
field1: [ Select ] ["addi", "add",
"sw"] field2: [ Select ]
["t0", "t1", "t6", "r0"] field3: [ Select ]
["5", "", "t5", "0"] field4: [
Select ] ["0", "t4", "4"]
Instruction 8
field1: [ Select ] ["sw", "sb", "lb",
"lw"] field2: [ Select ]
["t5", "t4", "t6"]
field3: [ Select ] ["4", "8",
"0"] field4: [ Select ] ["t0",
"N", "t1"]
Instruction 9
field1: [ Select ] ["addi", "subi",
"subi", "addi", "add", "add"] field2: [
Select ] ["t1", "1", "t0", "t0", "4"]
field3: [ Select ] ["t0", "1", "2",
"4", "1", "4"]
Instruction 10
field1: [ Select ] ["addi", "subi",
"add"] field2: [ Select ]
["t0", "t2", "t1"]
field3: [ Select ] ["2", "1", "4"]
Instruction 11
field1: [ Select ] ["bne", "bgt",
"jmp", "beq"] field2: [ Select ]
["t0", "t4", "t2"]
field3: [ Select ] ["t1", "t5",
"t3"] field4: [ Select ]
["loop", "exit", "else", "begin", "then"]
Please do like this:
For example,
[Select] ["a", "b", "c", "d"]
If a is correct, you can answer a.
Write the following C code sequence in MIPS/risc-v assembly: intj, N|41; for (int i=0; i < 3; i++) { j = j + Nlil; } First, allocate space in memory forj and N and use the appropriate pseudo instructions to load the variable and array base addresses into registers to and t1 respectively. j should hold 0 and N, 1,2,3,4. Use additional temporaries, t2, t3, etc. in order, as necessary. Note that are used instead of brackets for array indices since brackets are interpreted by canvas as answer holders. Don't use multiplication instructions - they are unnecessary. Don't use the Jump instruction, just an appropriate branch at the end. Each instruction has three or four fields: field1 field2 field3 field4; for example sll r1, r2, 3 Allocate j, N: [ Select] j: [Select ] [ Select ] N: [Select ] [ Select ] Begin program: [Select ]
appropriate pseudo instructions to load the variable and array base
addresses into registers t0 and t1 respectively. j should hold 0
and N, 1,2,3,4. Use additional temporaries, t2, t3, etc. in order,
as necessary. Note that | | are used instead of brackets for
array indices since brackets are interpreted by canvas as answer
holders.
Don’t use multiplication instructions - they are
unnecessary. Don’t use the Jump instruction,
just an appropriate branch at the end.
Each instruction has three or four fields: field1 field2 field3
field4; for example sll r1, r2, 3
Allocate j, N:
[ Select ]
[".align", "", ".space", "", ".data", ".text"]
j: [ Select ]
[".word", ".space", ".byte"]
[ Select ]
["0.0", "zero", "0"]
N: [ Select ]
[".byte", ".word", ".space"]
[ Select ] ["1,
2, 3, 4", "1.0, 2.0,3.0,4.0", "1;2;3;4"]
Begin program:
[ Select ]
[".text", ".space", ".align", ".data"] v
Instruction 1:
field1: [ Select ] ["la", "li",
"lw"] field2: [ Select ] ["j",
"t0", "0"]
field3: [ Select ] ["0", "t1",
"j"]
Instruction 2
field1: [ Select ] ["lb", "la",
"lw"] field2: [ Select ]
["1,2,3,4", "N", "j", "t1"]
field3: [ Select ] ["1, 2, 3, 4",
"t1", "N"]
Instruction 3
field1: [ Select ] ["li", "lw",
"lidx", "la"] field2: [ Select ]
["0", "t1", "t2"]
field3: [ Select ] ["r0", "t2",
"0"] #index
Instruction 4
field1: [ Select ] ["la", "li",
"lw"] field2: [ Select ] ["i",
"t3", "4"]
field3: [ Select ] ["t3", "r3",
"3"] #bound
Instruction 5
field0: [ Select ] ["loop", "exit",
"else", "then"] field1: [ Select ]
["lw", "li", "la"] field2: [
Select ] ["t0", "4", "t4"]
field3: [ Select ] ["0", "1",
"8"] field4: [ Select ] ["M",
"t1", "t0"]
Instruction 6
field1: [ Select ] ["lw", "sw",
"la"] field2: [ Select ]
["t4", "t0", "t5"] field3: [ Select ]
["0", "t4", "4"] field4: [
Select ] ["t5", "t0", "0"]
Instruction 7
field1: [ Select ] ["addi", "add",
"sw"] field2: [ Select ]
["t0", "t1", "t6", "r0"] field3: [ Select ]
["5", "", "t5", "0"] field4: [
Select ] ["0", "t4", "4"]
Instruction 8
field1: [ Select ] ["sw", "sb", "lb",
"lw"] field2: [ Select ]
["t5", "t4", "t6"]
field3: [ Select ] ["4", "8",
"0"] field4: [ Select ] ["t0",
"N", "t1"]
Instruction 9
field1: [ Select ] ["addi", "subi",
"subi", "addi", "add", "add"] field2: [
Select ] ["t1", "1", "t0", "t0", "4"]
field3: [ Select ] ["t0", "1", "2",
"4", "1", "4"]
Instruction 10
field1: [ Select ] ["addi", "subi",
"add"] field2: [ Select ]
["t0", "t2", "t1"]
field3: [ Select ] ["2", "1", "4"]
Instruction 11
field1: [ Select ] ["bne", "bgt",
"jmp", "beq"] field2: [ Select ]
["t0", "t4", "t2"]
field3: [ Select ] ["t1", "t5",
"t3"] field4: [ Select ]
["loop", "exit", "else", "begin", "then"]
Please do like this:
For example,
[Select] ["a", "b", "c", "d"]
If a is correct, you can answer a.
Write the following C code sequence in MIPS/risc-v assembly: intj, N|41; for (int i=0; i < 3; i++) { j = j + Nlil; } First, allocate space in memory forj and N and use the appropriate pseudo instructions to load the variable and array base addresses into registers to and t1 respectively. j should hold 0 and N, 1,2,3,4. Use additional temporaries, t2, t3, etc. in order, as necessary. Note that are used instead of brackets for array indices since brackets are interpreted by canvas as answer holders. Don't use multiplication instructions - they are unnecessary. Don't use the Jump instruction, just an appropriate branch at the end. Each instruction has three or four fields: field1 field2 field3 field4; for example sll r1, r2, 3 Allocate j, N: [ Select] j: [Select ] [ Select ] N: [Select ] [ Select ] Begin program: [Select ]