stack frame(堆疊框架): 一個函式所包含的堆疊區塊
目的:
可利用frame pointer與相對定址存取函式中的變數與參數
實驗:
使用online compiler
翻譯成組語,來查看frame pointer的操作
C:
}
}
----------------------------------------------------------------------------- prologue
Audio $sp, $sp, -48 #expand stack
----------------------------------------------------------------------------- body
sw $2,24($fp) #利用fp及相對定址將a存到stack中(sp已經指到後面了,用起來不方便)
lw $4,24($fp) #add的參數(為副本), 放在堆疊上
jal add(int, int) #呼叫add()
lw $fp,40($sp) #回復fp
addiu $sp,$sp,48 #回復sp
sw $4,24($fp) #參數 b(利用fp存取caller的參數)
重點:
1. frame pointer的作用
2. prologue 與 eplilogue的動作, 包含: ra , fp , sp的處理
沒有留言:
張貼留言