Compare commits

...

1 commit

Author SHA1 Message Date
Alain Zscheile
09e533f768 [example] just print +jpex 2022-09-25 01:59:03 +02:00
3 changed files with 31 additions and 0 deletions

View file

@ -0,0 +1,20 @@
use crate::{InstrPtr, Origin, StackEntValue};
use fogtix_bytecode::{Atom, Pointer};
use once_cell::sync::Lazy;
use std::sync::Arc;
#[derive(Debug)]
struct JpOrigin;
impl Origin for JpOrigin {
fn call(&self, p: &Pointer, a: &Atom, stack: &mut Vec<StackEntValue>) -> InstrPtr {
println!(
"({:x}, {:x}), ({:x}, {:x}) {:x?}",
p.hmac, p.payload, a.0, a.1, stack
);
(Arc::clone(&crate::noop::NOOP_MODULE), 0)
}
fn incr_refcount(&self, _p: &Pointer) {}
fn decr_refcount(&self, _p: &Pointer) {}
}
pub static JP_ORIGIN: Lazy<Arc<dyn Origin>> = Lazy::new(|| Arc::new(JpOrigin));

View file

@ -4,6 +4,8 @@ use std::sync::Arc;
mod noop; mod noop;
use noop::NOOP_ORIGIN; use noop::NOOP_ORIGIN;
mod just_print;
use just_print::JP_ORIGIN;
pub struct Module { pub struct Module {
h: readfilez::FileHandle, h: readfilez::FileHandle,
@ -371,5 +373,14 @@ fn main() {
instrp: (main_mod, 0), instrp: (main_mod, 0),
}; };
prc.stack.push(StackEntValue::Pointer(WrappedPointer {
orig: Arc::clone(&*JP_ORIGIN),
p: Pointer {
hmac: 0,
payload: 0,
},
_h: PhantomData,
}));
prc.run(); prc.run();
} }

BIN
docs/jpex.fgtxo Normal file

Binary file not shown.