something worked

This commit is contained in:
2022-12-29 14:30:30 -08:00
committed by Adam Wick
parent a797b43068
commit bb1cbf9962
7 changed files with 112 additions and 49 deletions

View File

@@ -3,15 +3,17 @@ use codespan_reporting::diagnostic::Diagnostic;
use codespan_reporting::files::SimpleFiles;
use codespan_reporting::term;
use codespan_reporting::term::termcolor::{ColorChoice, StandardStream};
use cranelift_codegen::ir::{AbiParam, types, Signature};
use cranelift_codegen::ir::{types, AbiParam, Signature};
use cranelift_codegen::isa::CallConv;
use cranelift_codegen::{isa, settings, CodegenError};
use cranelift_module::{default_libcall_names, ModuleError, Linkage, Module};
use cranelift_object::{ObjectBuilder, ObjectModule, object};
use cranelift_module::{default_libcall_names, Linkage, Module, ModuleError};
use cranelift_object::{object, ObjectBuilder, ObjectModule};
use ngr::asts::lil;
use ngr::passes::run_front_end;
use ngr::passes::{run_front_end, BackendError};
use ngr::runtime::RuntimeFunctions;
use pretty::Arena;
use std::io;
use target_lexicon::Triple;
use thiserror::Error;
#[derive(Parser, Debug)]
@@ -41,6 +43,9 @@ enum MainError {
#[error("Object write error: {0}")]
Object(#[from] object::write::Error),
#[error(transparent)]
Backend(#[from] BackendError),
}
fn main() -> Result<(), MainError> {
@@ -74,19 +79,13 @@ fn main() -> Result<(), MainError> {
if let Some((hil_tree, variable_map)) = hil_conversion_result.result {
//let arena = Arena::new();
let lil_tree = lil::Program::convert(hil_tree, variable_map.clone());
let isa = isa::lookup_by_name("aarch64-apple-darwin")?.finish(settings::Flags::new(settings::builder()))?;
let object_builder = ObjectBuilder::new(isa, "example", default_libcall_names())?;
let mut object_module = ObjectModule::new(object_builder);
let print_signature = Signature {
params: vec![AbiParam::new(types::I64)],
returns: vec![],
call_conv: CallConv::SystemV,
};
let print_func_id = object_module.declare_function("print", Linkage::Import, &print_signature)?;
let _compiled = lil_tree.into_cranelift(&mut object_module, print_func_id)?;
let isa = isa::lookup(Triple::host())?.finish(settings::Flags::new(settings::builder()))?;
let object_builder = ObjectBuilder::new(isa, "example", default_libcall_names())?;
let mut object_module = ObjectModule::new(object_builder);
let rtfuns = RuntimeFunctions::new(&mut object_module)?;
let _compiled = lil_tree.into_cranelift(&mut object_module, &rtfuns)?;
// something?
@@ -94,11 +93,11 @@ fn main() -> Result<(), MainError> {
std::fs::write("output.o", bytes)?;
// lil_tree
// .pretty(&variable_map, &arena)
// .into_doc()
// .render_colored(72, StandardStream::stdout(ColorChoice::Auto))
// .unwrap()
// lil_tree
// .pretty(&variable_map, &arena)
// .into_doc()
// .render_colored(72, StandardStream::stdout(ColorChoice::Auto))
// .unwrap()
}
Ok(())