1#![doc=include_str!("../README.md")]
2
3pub mod insts;
4pub mod page_manage;
5
6#[test]
20#[cfg(target_arch = "x86_64")]
21fn x86_64_test() {
22 use insts::x86_64::inst_list::*;
23 use insts::x86_64::registers::*;
24 use insts::x86_64::Op1;
25
26 use crate::page_manage::PageHandle;
27 use crate::page_manage::PageSize;
28
29 let r = mov(
30 false,
31 true,
32 Op1::Direct(TargetReg::from(Register64::R8 as u8)),
33 TargetReg::from(Register64::Rdi as u8),
34 );
35 let r1 = mov(
36 false,
37 true,
38 Op1::Direct(TargetReg::from(Register64::Rax as u8)),
39 TargetReg::from(Register64::R8 as u8),
40 );
41 let r2 = add_imm8(
42 false,
43 true,
44 Op1::Direct(TargetReg::from(Register64::Rax as u8)),
45 4,
46 );
47 let r3 = near_ret();
48 let src = [r.iter(), r1.iter(), r2.iter(), r3.iter()]
49 .into_iter()
50 .flatten()
51 .cloned()
52 .collect::<Vec<u8>>();
53
54 let r = PageHandle::from(PageSize::from(src.capacity()), &src);
55
56 let code: extern "C" fn(i32) -> i32 = unsafe { std::mem::transmute(r.get_ptr()) };
57
58 dbg!((code)(1));
59}
60
61#[test]
62#[cfg(target_arch = "riscv")]
63fn rv_add_test() {
64 use insts::riscv::rv32::rv32i::*;
65 use insts::riscv::registers::*;
66
67 use crate::page_manage::PageHandle;
68 use crate::page_manage::PageSize;
69}
70
71