Stack Tracing Considering the ARM assembly language version mentioned below

37 Views Asked by At

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)
0

There are 0 best solutions below