Implemented parameter passing for function pointers
This commit is contained in:
parent
b095a95021
commit
9a018f29e7
8 changed files with 71 additions and 44 deletions
21
src/core/AfterCall.go
Normal file
21
src/core/AfterCall.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
package core
|
||||
|
||||
import (
|
||||
"slices"
|
||||
|
||||
"git.urbach.dev/cli/q/src/asm"
|
||||
"git.urbach.dev/cli/q/src/cpu"
|
||||
)
|
||||
|
||||
// AfterCall pops used register values back from the stack.
|
||||
func (f *Function) AfterCall(registers []cpu.Register) {
|
||||
for _, register := range slices.Backward(f.CPU.General) {
|
||||
if f.RegisterIsUsed(register) {
|
||||
f.Register(asm.POP, register)
|
||||
}
|
||||
}
|
||||
|
||||
for _, register := range registers {
|
||||
f.FreeRegister(register)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue