var searchIndex = JSON.parse('{\
"add":{"doc":"Add example.","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[]},\
"fib":{"doc":"Fibonacci example.","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[]},\
"juicebox_asm":{"doc":"A simple x64
jit assembler with a minimal runtime to …","t":"DDDDDNNDEEEEEDLLLLLNNNNLNLLLLLLNNNLNNLNLLNNNNLLNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLNNNNNNLLLLLLLLLLLLICIIIDDDDIIIDCIEEEEIKNNNNNLLLLLLLLLLLLLLLLLLNNNKNNLLLLLLLLKNKNNNNLNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Asm","Imm16","Imm32","Imm64","Imm8","Indirect","IndirectDisp","Label","MemOp","Reg16","Reg32","Reg64","Reg8","Runtime","add","add","add","add","add_code","ah","al","ax","bh","bind","bl","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","bp","bpl","bx","call","ch","cl","cmp","cx","dec","dec","dh","di","dil","dl","drop","dump","dx","eax","ebp","ebx","ecx","edi","edx","esi","esp","from","from","from","into","into","into","into_code","jmp","jnz","jz","mov","mov","mov","mov","mov","mov","mov","mov","mov","mov","mov","mov","mov","mov","mov","mov","mov","new","new","nop","prelude","protect","r10","r10d","r10l","r10w","r11","r11d","r11l","r11w","r12","r12d","r12l","r12w","r13","r13d","r13l","r13w","r14","r14d","r14l","r14w","r15","r15d","r15l","r15w","r8","r8d","r8l","r8w","r9","r9d","r9l","r9w","rax","rbp","rbx","rcx","rdi","rdx","resolve","ret","rsi","rsp","si","sil","sp","spl","test","test","test","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Add","Asm","Call","Cmp","Dec","Imm16","Imm32","Imm64","Imm8","Jmp","Jnz","Jz","Label","MemOp","Mov","Reg16","Reg32","Reg64","Reg8","Test","add","ah","al","ax","bh","bl","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bp","bpl","bx","call","ch","cl","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cx","dec","dh","di","dil","dl","drop","dx","eax","ebp","ebx","ecx","edi","edx","esi","esp","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","jmp","jnz","jz","mov","new","r10","r10d","r10l","r10w","r11","r11d","r11l","r11w","r12","r12d","r12l","r12w","r13","r13d","r13l","r13w","r14","r14d","r14l","r14w","r15","r15d","r15l","r15w","r8","r8d","r8l","r8w","r9","r9d","r9l","r9w","rax","rbp","rbx","rcx","rdi","rdx","rsi","rsp","si","sil","sp","spl","test","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id"],"q":[[0,"juicebox_asm"],[146,"juicebox_asm::prelude"],[340,"core::convert"],[341,"alloc::vec"],[342,"core::result"],[343,"core::any"]],"d":["x64
jit assembler.","Type representing a 16 bit immediate.","Type representing a 32 bit immediate.","Type representing a 64 bit immediate.","Type representing an 8 bit immediate.","An indirect memory operand, eg mov [rax], rcx
.","An indirect memory operand with additional displacement, …","A label which is used as target for jump instructions.","Type representing a memory operand.","Definition of 16 bit registers.","Definition of 32 bit registers.","Definition of 64 bit registers.","Definition of 8 bit registers.","A simple mmap
ed runtime with executable pages.","","","","","Add block of code to the runtime and get function pointer …","","","","","Bind the Label to the current location.","","","","","","","","","","","","","","","","","","","","","","","Dump the currently added code to a file called jit.asm
. …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Consume the assembler and get the emitted code.","","","","","","","","","","","","","","","","","","","","","Create a new Runtime.","Create a new x64
jit assembler.","","Crate prelude, which can be used to import the most …","Write protect the underlying code page(s).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If the Label is bound, patch any pending relocation.","","","","","","","","","","","","","","","","","","","","","","","","","Type representing a 16 bit immediate.","Type representing a 32 bit immediate.","Type representing a 64 bit immediate.","Type representing an 8 bit immediate.","","","","A label which is used as target for jump instructions.","","","Definition of 16 bit registers.","Definition of 32 bit registers.","Definition of 64 bit registers.","Definition of 8 bit registers.","","Emit an add instruction.","","","","","","","","","","","","","","","","","","","","","","","","","","","Emit a call instruction.","","","","","","","","","","","Emit a compare call instruction.","","Emit a decrement instruction.","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","","","","","","","","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Emit an unconditional jump instruction.","Emit a conditional jump if not zero instruction (ZF = 0
).","Emit a conditional jump if zero instruction (ZF = 1
).","Emit an move instruction.","Create a new unbound
Label.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Emit a logical compare instruction.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,4,4,0,0,0,0,0,0,0,1,1,1,1,8,14,14,5,14,1,14,8,4,1,8,4,1,5,14,5,1,14,14,1,5,1,1,14,5,14,14,8,8,5,6,6,6,6,6,6,6,6,8,4,1,8,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,1,1,0,8,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,2,2,2,2,2,1,1,2,2,5,14,5,14,1,1,1,8,4,1,8,4,1,8,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,14,14,5,14,14,12,17,7,15,16,2,6,5,14,12,17,7,15,16,2,6,5,14,5,14,5,28,14,14,2,6,5,14,2,6,5,14,29,5,30,14,5,14,14,12,5,6,6,6,6,6,6,6,6,12,17,17,17,7,7,7,7,7,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,2,6,5,14,12,17,7,15,16,2,6,5,14,31,32,33,34,12,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,6,14,5,2,2,2,2,2,2,2,2,5,14,5,14,35,2,6,5,14,12,17,7,15,16,2,6,5,14,12,17,7,15,16,2,6,5,14,12,17,7,15,16,2,6,5,14],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2,2],3],[[1,4,5],3],[[1,6,6],3],[[1,4,7],3],[[8,-1],-2,[[11,[[10,[9]]]]],[]],0,0,0,0,[[1,12],3],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[1,2],3],0,0,[[1,4,7],3],0,[[1,6],3],[[1,2],3],0,0,0,0,[8,3],[8,3],0,0,0,0,0,0,0,0,0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,[[13,[9]]]],[[1,12],3],[[1,12],3],[[1,12],3],[[1,4,7],3],[[1,14,14],3],[[1,6,4],3],[[1,2,4],3],[[1,6,15],3],[[1,14,4],3],[[1,2,16],3],[[1,14,17],3],[[1,4,5],3],[[1,4,14],3],[[1,4,2],3],[[1,6,6],3],[[1,4,6],3],[[1,5,5],3],[[1,2,2],3],[[1,5,4],3],[[1,5,7],3],[[],8],[[],1],[1,3],0,[8,3],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,12],3],[1,3],0,0,0,0,0,0,[[1,4,7],3],[[1,2,2],3],[[1,6,6],3],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,-2,-3],3,[],[],[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[-1,-2],3,[],[]],0,0,[2,2],[6,6],[5,5],[14,14],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2,-3],3,[],[],[]],0,[[-1,-2],3,[],[]],0,0,0,0,[12,3],0,0,0,0,0,0,0,0,0,[-1,-1,[]],[-1,-1,[]],[20,17],[9,17],[9,7],[-1,-1,[]],[20,7],[21,7],[22,7],[22,15],[-1,-1,[]],[20,15],[21,15],[23,15],[9,15],[24,15],[25,16],[24,16],[26,16],[-1,-1,[]],[23,16],[20,16],[9,16],[21,16],[22,16],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2],3,[],[]],[[-1,-2,-3],3,[],[],[]],[[],12],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,-2,-3],3,[],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,[[18,[-2]]],[],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,19,[]]],"c":[],"p":[[3,"Asm",0],[4,"Reg64",146],[15,"tuple"],[4,"MemOp",0],[4,"Reg16",146],[4,"Reg32",146],[3,"Imm16",146],[3,"Runtime",0],[15,"u8"],[15,"slice"],[8,"AsRef",340],[3,"Label",146],[3,"Vec",341],[4,"Reg8",146],[3,"Imm32",146],[3,"Imm64",146],[3,"Imm8",146],[4,"Result",342],[3,"TypeId",343],[15,"i8"],[15,"u16"],[15,"i16"],[15,"u32"],[15,"i32"],[15,"i64"],[15,"u64"],[8,"Add",146],[8,"Call",146],[8,"Cmp",146],[8,"Dec",146],[8,"Jmp",146],[8,"Jnz",146],[8,"Jz",146],[8,"Mov",146],[8,"Test",146]]},\
"tiny_vm":{"doc":"TinyVm example.","t":"NNNNNNNDNNNDNEEDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFLLLLLLLLLLLLLLLLLLLLLLL","n":["A","Add","Addi","B","Branch","BranchZero","C","Fixup","Halt","Load","LoadImm","PhysAddr","Store","TinyInsn","TinyReg","TinyVm","bind","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","dump","eq","eq","fmt","fmt","from","from","from","from","from","interp","into","into","into","into","into","into","jit","make_tinyvm_fib","make_tinyvm_jit_perf","make_tinyvm_jit_test","new","new","read_mem","read_reg","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","write_mem","write_reg"],"q":[[0,"tiny_vm"],[75,"alloc::vec"],[76,"core::fmt"],[77,"core::fmt"],[78,"core::any"]],"d":["","Add the register to the register reg1 += reg2
.","Add the immediate to the register reg += imm
.","","Jump unconditional (absolute addressing) pc = disp
.","Jump if the register is zero (absolute addressing) …","","A minial fixup utility to implement jump labels when …","Halt the VM.","Load a value from the memory (absolute addressing) into …","Load the immediate value into the register reg = imm
.","A guest physical address.","Store a value from the register into the memory (absolute …","The instructions for the TinyVm
.","The registers for the TinyVm
.","The TinyVm
virtual machine state.","Bind the Fixup
to the current location of prog
and resolve …","","","","","","","","","","","","","","","Dump the VM state to stdout.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Run in interpreter mode until the next TinyInsn::Halt
…","Calls U::from(self)
.","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Run in JIT mode until the next TinyInsn::Halt
instruction …","Generate a guest program to compute the fiibonacci …","Generate a simple count down loop to crunch some …","Generate a test program for the jit.","Create a new TinyVm
and initialize the instruction memory …","Create a new Fixup
at the current pc.","Read guest data memory.","Read guest register.","","","","","","","","","","","","","","","","","","Write guest data memory.","Write guest register."],"i":[5,2,2,5,2,2,5,0,2,2,2,0,2,0,0,0,1,10,6,1,5,2,10,6,1,5,2,5,2,5,2,6,5,2,5,2,10,6,1,5,2,6,10,10,6,1,5,2,6,0,0,0,6,1,6,6,5,2,10,6,1,5,2,10,6,1,5,2,10,6,1,5,2,6,6],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,[3,[2]]],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[5,5],[2,2],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[6,4],[[5,5],7],[[2,2],7],[[5,8],9],[[2,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[6,4],[-1,-2,[],[]],[10,11],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[6,4],[12,[[3,[2]]]],[[],[[3,[2]]]],[[],[[3,[2]]]],[[[3,[2]]],6],[11,1],[[6,10],12],[[6,5],12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[-1,14,[]],[[6,10,12],4],[[6,5,12],4]],"c":[],"p":[[3,"Fixup",0],[4,"TinyInsn",0],[3,"Vec",75],[15,"tuple"],[4,"TinyReg",0],[3,"TinyVm",0],[15,"bool"],[3,"Formatter",76],[6,"Result",76],[3,"PhysAddr",0],[15,"usize"],[15,"u16"],[4,"Result",77],[3,"TypeId",78]]}\
}');
if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};