diff --git a/.gitignore b/.gitignore index e9747d6..5bf9b1f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ target/ -*.s \ No newline at end of file +*.s +*.o \ No newline at end of file diff --git a/bfox-asmgen/src/targets/x86_64_nasm.rs b/bfox-asmgen/src/targets/x86_64_nasm.rs index 6882af2..f1cafcf 100644 --- a/bfox-asmgen/src/targets/x86_64_nasm.rs +++ b/bfox-asmgen/src/targets/x86_64_nasm.rs @@ -11,23 +11,22 @@ pub fn compile_x86_64_nasm(_asm_gen: &mut AsmGen, tokens: Vec, bw: &mut B writeln!(bw, "BITS 64")?; writeln!(bw, "section .bss")?; - writeln!(bw, " memory resb 30000")?; - writeln!(bw, " memory_ptr resb 1")?; + writeln!(bw, " memory: resb 30000")?; + writeln!(bw, " mem_ptr: resq 1")?; - writeln!(bw, "section .data")?; - writeln!(bw, " input db 0")?; + // writeln!(bw, "section .data")?; + // writeln!(bw, " input db 0")?; writeln!(bw, "section .text")?; writeln!(bw, "_start:")?; - writeln!(bw, " mov rdi, memory")?; - writeln!(bw, " mov [memory_ptr], rdi")?; - for t in tokens { match t.typ { TokenType::Add => { - writeln!(bw, " inc byte [rdi]")?; + writeln!(bw, " mov rax, memory")?; + writeln!(bw, " add rax, [mem_ptr]")?; + writeln!(bw, " inc byte [rax]")?; } ut => todo!("{ut:?}")