summaryrefslogtreecommitdiff
path: root/tnslc/compile/function.tnsl
diff options
context:
space:
mode:
Diffstat (limited to 'tnslc/compile/function.tnsl')
-rw-r--r--tnslc/compile/function.tnsl6
1 files changed, 5 insertions, 1 deletions
diff --git a/tnslc/compile/function.tnsl b/tnslc/compile/function.tnsl
index 18d6c36..a30f383 100644
--- a/tnslc/compile/function.tnsl
+++ b/tnslc/compile/function.tnsl
@@ -5,12 +5,14 @@ struct Function {
inputs,
outputs,
~parse.Node _up,
+ bool m
}
/; method Function
/; init (~parse.Node n)
self.name = utils.strcpy(n`.data)
self._up = n
+ self.m = false
Var v
self.inputs.init(len v)
self.outputs.init(len v)
@@ -38,9 +40,9 @@ struct Function {
p.loc = reg
reg++
;; else
- stack_up = stack_up + p.actual_size()
p.loc = 0 - 1
p.offset = stack_up
+ stack_up = stack_up + p.actual_size()
;/
self.inputs.push(~p)
;/
@@ -134,6 +136,8 @@ struct Function {
;/
/; _end_func(~Scope scope, ~CompBuf cb)
+ cb`.add_c("\n\0")
+ scope`.place_end_label()
cb`.add_c(" lea rsp, [rbp - 56]\n\0")
cb`.add_c(" pop r15\n\0")
cb`.add_c(" pop r14\n\0")