90 likes | 201 Views
OutLine of Tutorial 5. Summary of Load/Store instructions Exercises reading memory in Simulator Exercises writing code. Summary of Load/Store instructions. Format Opcode regA, displacement(regB) displacement is less than 16 bit
E N D
OutLine of Tutorial 5 • Summary of Load/Store instructions • Exercises reading memory in Simulator • Exercises writing code
Summary of Load/Store instructions • Format • Opcode regA, displacement(regB) • displacement is less than 16 bit • Code like “ldq regA, label” won’t be executed in the Simulator, it needs to be replaced by following code • ldiq regA, label; • ldq regA, (regA) • vitual memory = displacement + value of regB
Summary of Load/Store instructions • Load instructions in Simulator • ldbu: • filling remaining bytes in register with 0 • ldwu: • filling remaining bytes in register with 0 • Memory address has to be multiple of 2 • ldl • filling remaining bytes in register with signed bit • Memory address has to be multiple of 4 • ldq • Memory address has to be multiple of 8 • lda • Load the memory address rather than the value
Summary of Load/Store instructions • Store instruction in Simulator • stb: • stw: • Memory address has to be multiple of 2 • stl • Memory address has to be multiple of 4 • stq • Memory address has to be multiple of 8
Get answer using Simulator, Exercise 1 following code is in example 5 Show the contents of memory and the labels data{ value0: asciiz "ab"; value1: byte 0x12; value2: long 0x3456; value3: quad 0x87654321; } With above memory allocated, indicate how the contents of registers are changed by following instructions, and which instructions can’t be executed ldiq $t0, value0; ldq $t1, ($t0); ldwu $t2, 4($t0); lda $t3, 3($t0); ldbu $t2, ($t3); ldl $t3, 8($t0); ldl $t4, 6($t0); ldq $t5, 4($t0);
Continue exercise 1 Continue with above exercise, indicate how the contents of registers are changed by following instructions, and which instructions can’t be executed stq $t1, ($t0); stb $t2, 1($t0); stw $t3, 2($t0); stl $t3, 8($t0); ldiq $t0, value2; stq $t3, ($t0); stl $t3, 2($t0);
Get answer using Simulator, Exercise 2 following code is in example 6 Show the contents of memory and the labels data{ align quad; value0: asciiz "ab"; align word; value1: byte 0x12; align long; value2: word 0x3456; value3: long 0x7890; } With above memory allocated, indicate how the contents of registers are changed by following instructions, and which instructions can’t be executed ldiq $t0, value0; ldq $t1, ($t0); ldwu $t2, 4($t0); lda $t3, 3($t0); ldbu $t2, ($t3); ldl $t3, 8($t0); ldl $t4, 6($t0); ldq $t5, 4($t0);
Continue exercise 2 Continue with above exercise, indicate how the contents of registers are changed by following instructions, and which instructions can’t be executed stq $t1, ($t0); stb $t2, 1($t0); stw $t3, 2($t0); stl $t3, 8($t0); ldiq $t0, value2; stq $t3, ($t0); stl $t3, 2($t0);
Exercise 3: add code to example 7 Write code to load value0,value1,value2,value3 to register t1,t2,t3,t4 Write code to store values in register t1,t2,t3,t4 in memory label value0,value1,value2,value3