首先从字面UnicornVM上理解,拆成两部分Unicorn、VM。其中Unicorn是由越南大佬Nguyen Anh Quynh开发的虚拟CPU框架,底层基于Qemu,而VM是指Virtual Machine也即虚拟机。虚拟机一般有两种解释,一种是指系统虚拟机,比如VMWare、VirtualBox,一种是指软件虚拟机,比如Python解释器,此处我们的UnicornVM指第二种情况。那么UnicornVM与Unicorn区别在哪里呢?
// run function 'fn' on our VCPU with 'ctx'
// return value is x0
VCAPI long vc_run_interp(const void *fn, const vc_context_t *ctx);
// make a wrapper for function 'fn' with 'usrctx','callback'
// return value is a new function pointer which will run under our VCPU
// you can replace this pointer to target's function pointer
// like C++-Vtable/Script-Native-Bridge
// if return null, you should check errno
VCAPI const void *vc_make_callee(const void *fn, void *usrctx,
fn_vc_callback_t callback);