diff options
Diffstat (limited to 'src/helpers/function.S')
| -rw-r--r-- | src/helpers/function.S | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/helpers/function.S b/src/helpers/function.S index 5d9c155..af41905 100644 --- a/src/helpers/function.S +++ b/src/helpers/function.S @@ -52,6 +52,13 @@ mov \register, .L\scope\()_\name\()(%rbp) .endm +.macro _function_address_of_local scope, name, register + _function_require_locals + lea .L\scope\()_\name\()(%rbp), \register +.endm + + + .macro function_begin name _function_require_no_function @@ -66,6 +73,10 @@ _function_allocate_local_variables \name .endm + .macro address_of_local var_name, register + _function_address_of_local \name, \var_name, \register + .endm + .macro load_local var_name, register _function_load_local \name, \var_name, \register .endm @@ -92,6 +103,7 @@ .set .L_FUNCTION_IS_IN_FUNCTION_DEFINITION, 0 .set .L_FUNCTION_LOCALS_ALLOCATED, 0 .purgem allocate_locals + .purgem address_of_local .purgem function_end .purgem function_exit .purgem load_local |
