From e9f366b9f63588eed75a8dc250102e1833c4d4a9 Mon Sep 17 00:00:00 2001 From: Pavel Pisa <pisa@cmp.felk.cvut.cz> Date: Sun, 10 May 2020 09:50:54 +0200 Subject: [PATCH] eminaries/qtmips/call-syscall/l10-05-call-6args.S: describe omit-frame-pointer. Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz> --- seminaries/qtmips/call-syscall/l10-05-call-6args.S | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/seminaries/qtmips/call-syscall/l10-05-call-6args.S b/seminaries/qtmips/call-syscall/l10-05-call-6args.S index 2f6502c..4169dff 100644 --- a/seminaries/qtmips/call-syscall/l10-05-call-6args.S +++ b/seminaries/qtmips/call-syscall/l10-05-call-6args.S @@ -35,6 +35,11 @@ final: main: addiu $sp, $sp, -32 // allocate space for save and arguments sw $ra, 28($sp) // store return address from main + + sw $s8, 24($sp) // store farme pointer, not required there + or $s8, $sp, $zero // set fp to point to top of the stack, not required + // see -fomit-frame-pointer/-fno-omit-frame-pointer + addiu $v0, $zero, 6 // 6-th argument value sw $v0, 20($sp) // 6-th argument to the stack addiu $v0, $zero, 5 // 5-th argument value @@ -44,6 +49,10 @@ main: addiu $a1, $zero, 2 // 2-nd argument value jal complex // call complex function addiu $a0, $zero, 1 // store 1-st argument, run in delay slot + + or $sp, $s8, $zero // restore stack from frame pointer + lw $s8, 24($sp) // restore frame pointer, not required there + lw $ra, 28($sp) // restore return address nop // on MIPS1 lw result not available directly jr $ra // return from main, result in v0 -- GitLab