#![no_std]
extern crate alloc;
use alloc::{
string::{String, ToString},
vec::Vec,
};
use core::marker::PhantomData;
pub use error::ParserError;
mod ast;
mod disassembler;
mod error;
pub struct Mipsasm<'a> {
base_addr: u32,
_marker: PhantomData<&'a str>,
}
impl<'a> Default for Mipsasm<'a> {
fn default() -> Self {
Self::new()
}
}
impl<'a> Mipsasm<'a> {
pub fn new() -> Mipsasm<'a> {
Mipsasm {
base_addr: 0,
_marker: PhantomData,
}
}
pub fn base(&mut self, addr: u32) -> &mut Mipsasm<'a> {
self.base_addr = addr;
self
}
pub fn disassemble(&self, input: &[u32]) -> Vec<String> {
let x = disassembler::disassemble(input.to_vec());
x.iter().map(|x| x.to_string()).collect::<Vec<String>>()
}
}