summaryrefslogtreecommitdiff
path: root/astartup.asm
diff options
context:
space:
mode:
Diffstat (limited to 'astartup.asm')
-rw-r--r--astartup.asm38
1 files changed, 37 insertions, 1 deletions
diff --git a/astartup.asm b/astartup.asm
index 6108a67..fc64c36 100644
--- a/astartup.asm
+++ b/astartup.asm
@@ -1327,16 +1327,36 @@ print_symbol_sc:
print_symbol_2:
mov rax,[rcx]
+ ifdef PIC
+ lea rbp,dINT+2+0
+ cmp rax,rbp
+ else
cmp rax,offset dINT+2
+ endif
je print_int_node
+ ifdef PIC
+ lea rbp,CHAR+2+0
+ cmp rax,rbp
+ else
cmp rax,offset CHAR+2
+ endif
je print_char_denotation
+ ifdef PIC
+ lea rbp,BOOL+2+0
+ cmp rax,rbp
+ else
cmp rax,offset BOOL+2
+ endif
je print_bool
+ ifdef PIC
+ lea rbp,REAL+2+0
+ cmp rax,rbp
+ else
cmp rax,offset REAL+2
+ endif
je print_real_node
test rbx,rbx
@@ -1722,10 +1742,18 @@ BtoAC:
test al,al
je BtoAC_false
BtoAC_true:
+ ifdef PIC
+ lea rcx,true_string+0
+ else
mov rcx,offset true_string
+ endif
ret
BtoAC_false:
+ ifdef PIC
+ lea rcx,false_string+0
+ else
mov rcx,offset false_string
+ endif
ret
RtoAC:
@@ -1749,12 +1777,20 @@ RtoAC:
jmp return_sprintf_buffer
ItoAC:
+ ifdef PIC
+ lea rcx,sprintf_buffer+0
+ else
mov rcx,offset sprintf_buffer
+ endif
call int_to_string
mov rax,rcx
+ ifdef PIC
+ lea rcx,sprintf_buffer+0
+ sub rax,rcx
+ else
sub rax,offset sprintf_buffer
-
+ endif
jmp sprintf_buffer_to_string
public convert_int_to_string