part 1 part 2 Confused on how to trace the changes to the stack.
Need to show every instruction that affects the stack, the location of the stack or the frame pointer (all of the highlighted instructions). For each of these instructions, show the full contents of the stack after the instruction has been executed.
Using the table below.
| Address | Value |
|---|---|
| FFFF FFAC | |
| FFFF FFB0 | |
| FFFF FFB4 | |
| FFFF FFB8 | |
| FFFF FFBC | |
| FFFF FFC0 | |
| FFFF FFC4 | |
| FFFF FFC8 | |
| FFFF FFCC | |
| FFFF FFD0 | |
| FFFF FFD4 | |
| FFFF FFD8 | |
| FFFF FFDC | |
| FFFF FFE0 | |
| FFFF FFE4 | |
| FFFF FFE8 | |
| FFFF FFEC | |
| FFFF FFF0 | |
| FFFF FFF4 | |
| FFFF FFF8 | |
| FFFF FFFC | |
| Instruction | ___________ |
AREA MULTIPLY_STACK, CODE, READONLY
ENTRY
START LDR FP, FPS ; (0)
MOV SP, #0 ; (4)
BL MAIN ; (8)
DONE B DONE ; (12)
MAIN PUSH {FP, LR} ; (16)
SUB SP, SP, #16 ; (20)
ADD FP, SP, #0 ; (24)
ADR R10, RESULT ; (28)
LDR R3, NUM1 ; (32)
STR R3, [FP, #4] ; (36)
LDR R3, NUM2 ; (40)
STR R3, [FP, #8] ; (44)
LDR R1, [FP, #8] ; (48)
LDR R0, [FP, #4] ; (52)
BL MPY_NE ; (56)
STR R0, [R10] ; (60)
MOV R3, R0 ; (64)
STR R3, [FP, #12] ; (68)
MOVS R3, #0 ; (72)
MOV R0, R3 ; (76)
ADDS FP, FP, #16 ; (80)
MOV SP, FP ; (84)
POP {FP, PC} ; (88)
MPY_NE PUSH {FP, LR} ; (92)
SUB SP, SP, #24 ; (96)
ADD FP, SP, #0 ; (100)
STR R0, [FP, #4] ; (104)
STR R1, [FP] ; (108)
LDR R3, [FP, #4] ; (112)
BL ABS ; (116)
STR R0, [FP, #16] ; (120)
LDR R3, [FP] ; (124)
BL ABS ; (128)
STR R0, [FP, #20] ; (132)
MOVS R3, #0 ; (136)
STR R3, [FP, #8] ; (140)
MOVS R3, #0 ; (144)
STR R3, [FP, #12] ; (148)
L5 LDR R2, [FP, #12] ; (152)
LDR R3, [FP, #16] ; (156)
CMP R2, R3 ; (160)
BGE L4 ; (164)
LDR R2, [FP, #8] ; (168)
LDR R3, [FP, #20] ; (172)
ADD R3, R3, R2 ; (176)
STR R3, [FP, #8] ; (180)
LDR R3, [FP, #12] ; (184)
ADDS R3, R3, #1 ; (188)
STR R3, [FP, #12] ; (192)
B L5 ; (196)
L4 LDR R3, [FP, #4] ; (200)
CMP R3, #0 ; (204)
BGE L6 ; (208)
LDR R3, [FP, #8] ; (212)
NEGS R3, R3 ; (216)
STR R3, [FP, #8] ; (220)
L6 LDR R3, [FP] ; (224)
CMP R3, #0 ; (228)
BGE L7 ; (232)
LDR R3, [FP, #8] ; (236)
NEGS R3, R3 ; (240)
STR R3, [FP, #8] ; (244)
L7 LDR R3, [FP, #8] ; (248)
MOV R0, R3 ; (252)
ADDS FP, FP, #24 ; (256)
MOV SP, FP ; (260)
POP {FP, PC} ; (264)
ABS PUSH {FP} ; (268)
CMP R3, #0 ; (272)
BGE L10 ; (276)
NEGS R3, R3 ; (280)
L10 MOV R0, R3 ; (284)
LDR FP, [SP], #4 ; (288)
BX LR ; (292)
NUM1 DCD -5 ; (296)
NUM2 DCD -11 ; (300)
RESULT SPACE 4 ; (304)
FPS DCD 0XFFFFFFA0 ; (308)
END
I tried analyzing it and looking at the professor’s notes but I can not understand how to start or read it.
I started with this but I do not think it’s right.
| Address | Value |
|---|---|
| FFFF FFAC | 0xFFFFFFA0 |
| FFFF FFB0 | |
| FFFF FFB4 | |
| FFFF FFB8 | |
| FFFF FFBC | |
| FFFF FFC0 | |
| FFFF FFC4 | |
| FFFF FFC8 | |
| FFFF FFCC | |
| FFFF FFD0 | |
| FFFF FFD4 | |
| FFFF FFD8 | |
| FFFF FFDC | |
| FFFF FFE0 | |
| FFFF FFE4 | |
| FFFF FFE8 | |
| FFFF FFEC | |
| FFFF FFF0 | |
| FFFF FFF4 | |
| FFFF FFF8 | |
| FFFF FFFC | |
| Instruction | LDR FP, FPS ;(0) |