#![doc=include_str!("../README.md")]
pub mod insts;
pub mod page_manage;
#[test]
#[cfg(target_arch = "x86_64")]
fn x86_64_test() {
use insts::x86_64::inst_list::*;
use insts::x86_64::registers::*;
use insts::x86_64::Op1;
use crate::page_manage::PageHandle;
use crate::page_manage::PageSize;
let r = mov(
false,
true,
Op1::Direct(TargetReg::from(Register64::R8 as u8)),
TargetReg::from(Register64::Rdi as u8),
);
let r1 = mov(
false,
true,
Op1::Direct(TargetReg::from(Register64::Rax as u8)),
TargetReg::from(Register64::R8 as u8),
);
let r2 = add_imm8(
false,
true,
Op1::Direct(TargetReg::from(Register64::Rax as u8)),
4,
);
let r3 = near_ret();
let src = [r.iter(), r1.iter(), r2.iter(), r3.iter()]
.into_iter()
.flatten()
.cloned()
.collect::<Vec<u8>>();
let r = PageHandle::from(PageSize::from(src.capacity()), &src);
let code: extern "C" fn(i32) -> i32 = unsafe { std::mem::transmute(r.get_ptr()) };
dbg!((code)(1));
}
#[test]
#[cfg(target_arch = "riscv")]
fn rv_add_test() {
use insts::riscv::rv32::rv32i::*;
use insts::riscv::registers::*;
use crate::page_manage::PageHandle;
use crate::page_manage::PageSize;
}