diff --git a/bfox-asmgen/src/targets/x86_64_nasm.rs b/bfox-asmgen/src/targets/x86_64_nasm.rs index 8caccc8..6882af2 100644 --- a/bfox-asmgen/src/targets/x86_64_nasm.rs +++ b/bfox-asmgen/src/targets/x86_64_nasm.rs @@ -1,6 +1,7 @@ -use std::{fs::File, io::{BufWriter, Write}}; +use std::{any::Any, fs::File, io::{BufWriter, Write}}; use anyhow::Result; use bfox_parser::types::token::Token; +use bfox_parser::types::token::TokenType; use crate::AsmGen; @@ -8,11 +9,30 @@ use crate::AsmGen; pub fn compile_x86_64_nasm(_asm_gen: &mut AsmGen, tokens: Vec, bw: &mut BufWriter) -> Result<()>{ writeln!(bw, "BITS 64")?; + + writeln!(bw, "section .bss")?; + writeln!(bw, " memory resb 30000")?; + writeln!(bw, " memory_ptr resb 1")?; + + 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 { - log::debug!("{t:?}"); + match t.typ { + + TokenType::Add => { + writeln!(bw, " inc byte [rdi]")?; + } + + ut => todo!("{ut:?}") + + } } // Exit