I FIXED THE STACK ISSUES LESS GOOO
This commit is contained in:
@@ -38,7 +38,7 @@ class X86_64Generator(Generator):
|
||||
|
||||
self.lines.append(f"movsd {conversion[reg]}, [rsp + {var_pos + offset}]\n\t")
|
||||
self.lines.append("add rsp, 8\n\t")
|
||||
#self.stack_size -= 1
|
||||
self.stack_size += 1
|
||||
elif var["type"] in [IntNode,StringNode]:
|
||||
if no_stack_pop:
|
||||
self.lines.append(f"mov {reg}, [rsp + {var_pos + offset}]\n\t")
|
||||
@@ -50,6 +50,7 @@ class X86_64Generator(Generator):
|
||||
|
||||
except TypeError: # variable doesnt exist
|
||||
traceback(self.code, "NameError", f"\"{var_name}\" is not defined.")
|
||||
print(var, self.stack_size)
|
||||
return var["type"]
|
||||
|
||||
def get_var_pos(self, var_name: str):
|
||||
@@ -84,7 +85,7 @@ class X86_64Generator(Generator):
|
||||
string_len = self.add_constant(f"equ $ - {string_pointer[1:-1]}", no_string=True)
|
||||
self.lines.append(f"lea rax, {string_pointer}\n\t")
|
||||
self.push("rax")
|
||||
self.lines.append(f"lea rax, {string_len[1:-1]}\n\t")
|
||||
self.lines.append(f"mov rax, {string_len[1:-1]}\n\t")
|
||||
self.push("rax")
|
||||
|
||||
elif type(starting_value) == str:
|
||||
@@ -389,7 +390,7 @@ class X86_64Generator(Generator):
|
||||
|
||||
if isinstance(arg, VarRefNode):
|
||||
self.get_variable(arg.var_name, "rsi", False, 0, True)
|
||||
self.get_variable(arg.var_name, "rdx", False, 8, True)
|
||||
self.get_variable(arg.var_name, "rdx", False, -8, True)
|
||||
else:
|
||||
string_pointer = self.add_constant(printed_value)[1:-1]
|
||||
string_len = self.add_constant(f"equ $ - {string_pointer}", True)[1:-1]
|
||||
|
Reference in New Issue
Block a user