something worked
This commit is contained in:
41
src/bin.rs
41
src/bin.rs
@@ -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(())
|
||||
|
||||
Reference in New Issue
Block a user