var searchIndex = new Map(JSON.parse('[\
["add",{"doc":"Add example.","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[],"b":[]}],\
["fib",{"doc":"Fibonacci example.","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[],"b":[]}],\
["juicebox_asm",{"doc":"A simple x64
jit assembler with a minimal runtime to …","t":"FFFFFPPFGGGGGFNNNNNPPPPNPNNNNNNNNNNNNNNNNNNNNNNNNPPPNPPNNNNNNNNNPNNPPPPNNNPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPNPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKKKKKKKKKKKMMMMMMMMMMM","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","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","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","dec","dh","di","dil","dl","drop","drop","dump","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","from","from","from","from","from","insn","into","into","into","into","into","into","into","into","into","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","new","nop","pop","pop","push","push","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","ret","rsi","rsp","si","sil","sp","spl","test","test","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_from","try_from","try_from","try_into","try_into","try_into","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","type_id","type_id","type_id","with_profile","Add","Call","Cmp","Dec","Jmp","Jnz","Jz","Mov","Pop","Push","Test","add","call","cmp","dec","jmp","jnz","jz","mov","pop","push","test"],"q":[[0,"juicebox_asm"],[248,"juicebox_asm::insn"],[270,"core::convert"],[271,"alloc::vec"],[272,"core::result"],[273,"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 the block of code
to the runtime and a get function …","","","","","Bind the Label to the current location.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Unmaps the code page. This invalidates all the function …","Dump the code added so far to the runtime into a file …","","","","","","","","","","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.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Trait definitions of various instructions.","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)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Consume the assembler and get the emitted code.","","","","","","","","","","","","","","","","","","","","","Create a new x64
jit assembler.","Create a new unbound
Label.","Create a new Runtime.","Emit a nop
instruction.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Emit a ret
instruction.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Trait for add
instruction kinds.","Trait for call
instruction kinds.","Trait for cmp
instruction kinds.","Trait for dec
instruction kinds.","Trait for jmp
instruction kinds.","Trait for jnz
instruction kinds.","Trait for jz
instruction kinds.","Trait for mov
instruction kinds.","Trait for pop
instruction kinds.","Trait for push
instruction kinds.","Trait for test
instruction kinds.","Emit an add instruction.","Emit a call instruction.","Emit a compare instruction.","Emit a decrement instruction.","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.","Emit a pop instruction.","Emit a push instruction.","Emit a logical compare instruction."],"i":[0,0,0,0,0,2,2,0,0,0,0,0,0,0,1,1,1,1,8,13,13,6,13,1,13,1,12,8,2,14,3,18,21,7,5,6,13,1,12,8,2,14,3,18,21,7,5,6,13,6,13,6,1,13,13,7,5,6,13,7,5,6,13,1,6,1,1,13,6,13,13,12,8,8,6,5,5,5,5,5,5,5,5,1,12,8,2,14,14,14,3,3,3,3,3,18,18,18,18,18,18,18,21,21,21,21,21,21,21,21,21,21,21,7,5,6,13,0,1,12,8,2,14,3,18,21,7,5,6,13,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,8,1,1,1,1,1,7,5,13,6,7,5,13,6,7,5,13,6,7,5,13,6,7,5,13,6,7,5,13,6,7,5,13,6,7,5,13,6,7,7,7,7,7,7,1,7,7,6,13,6,13,1,1,1,7,5,6,13,1,12,8,2,14,3,18,21,7,5,6,13,1,12,8,2,14,3,18,21,7,5,6,13,1,12,8,2,14,3,18,21,7,5,6,13,8,0,0,0,0,0,0,0,0,0,0,0,29,30,31,32,33,34,35,36,37,38,39],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2,3],4],[[1,5,5],4],[[1,2,6],4],[[1,7,7],4],[[8,-1],-2,[[11,[[10,[9]]]]],[]],0,0,0,0,[[1,12],4],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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[1,7],4],0,0,[7,7],[5,5],[6,6],[13,13],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[1,2,3],4],0,[[1,5],4],[[1,7],4],0,0,0,0,[12,4],[8,4],[8,4],0,0,0,0,0,0,0,0,0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[9,14],[15,14],[16,3],[15,3],[9,3],[-1,-1,[]],[17,3],[15,18],[-1,-1,[]],[17,18],[16,18],[9,18],[19,18],[20,18],[-1,-1,[]],[17,21],[22,21],[15,21],[20,21],[19,21],[23,21],[24,21],[9,21],[25,21],[16,21],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],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,[[26,[9]]]],[[1,12],4],[[1,12],4],[[1,12],4],[[1,7,2],4],[[1,7,7],4],[[1,6,6],4],[[1,2,5],4],[[1,13,14],4],[[1,2,6],4],[[1,5,18],4],[[1,2,13],4],[[1,2,7],4],[[1,13,2],4],[[1,2,3],4],[[1,13,13],4],[[1,7,21],4],[[1,6,2],4],[[1,5,2],4],[[1,6,3],4],[[1,5,5],4],[[],1],[[],12],[[],8],[1,4],[[1,6],4],[[1,7],4],[[1,7],4],[[1,6],4],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,4],0,0,0,0,0,0,[[1,2,3],4],[[1,7,7],4],[[1,5,5],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[[],8],0,0,0,0,0,0,0,0,0,0,0,[[29,-1,-2],4,[],[]],[[30,-1],4,[]],[[31,-1,-2],4,[],[]],[[32,-1],4,[]],[[33,-1],4,[]],[[34,-1],4,[]],[[35,-1],4,[]],[[36,-1,-2],4,[],[]],[[37,-1],4,[]],[[38,-1],4,[]],[[39,-1,-2],4,[],[]]],"c":[],"p":[[5,"Asm",0],[6,"MemOp",0],[5,"Imm16",0],[1,"tuple"],[6,"Reg32",0],[6,"Reg16",0],[6,"Reg64",0],[5,"Runtime",0],[1,"u8"],[1,"slice"],[10,"AsRef",270],[5,"Label",0],[6,"Reg8",0],[5,"Imm8",0],[1,"i8"],[1,"u16"],[1,"i16"],[5,"Imm32",0],[1,"i32"],[1,"u32"],[5,"Imm64",0],[1,"i64"],[1,"usize"],[1,"u64"],[1,"isize"],[5,"Vec",271],[6,"Result",272],[5,"TypeId",273],[10,"Add",248],[10,"Call",248],[10,"Cmp",248],[10,"Dec",248],[10,"Jmp",248],[10,"Jnz",248],[10,"Jz",248],[10,"Mov",248],[10,"Pop",248],[10,"Push",248],[10,"Test",248]],"b":[[14,"impl-Add%3CMemOp,+Imm16%3E-for-Asm"],[15,"impl-Add%3CReg32,+Reg32%3E-for-Asm"],[16,"impl-Add%3CMemOp,+Reg16%3E-for-Asm"],[17,"impl-Add%3CReg64,+Reg64%3E-for-Asm"],[65,"impl-Dec%3CReg32%3E-for-Asm"],[66,"impl-Dec%3CReg64%3E-for-Asm"],[88,"impl-From%3Cu8%3E-for-Imm8"],[89,"impl-From%3Ci8%3E-for-Imm8"],[90,"impl-From%3Cu16%3E-for-Imm16"],[91,"impl-From%3Ci8%3E-for-Imm16"],[92,"impl-From%3Cu8%3E-for-Imm16"],[94,"impl-From%3Ci16%3E-for-Imm16"],[95,"impl-From%3Ci8%3E-for-Imm32"],[97,"impl-From%3Ci16%3E-for-Imm32"],[98,"impl-From%3Cu16%3E-for-Imm32"],[99,"impl-From%3Cu8%3E-for-Imm32"],[100,"impl-From%3Ci32%3E-for-Imm32"],[101,"impl-From%3Cu32%3E-for-Imm32"],[103,"impl-From%3Ci16%3E-for-Imm64"],[104,"impl-From%3Ci64%3E-for-Imm64"],[105,"impl-From%3Ci8%3E-for-Imm64"],[106,"impl-From%3Cu32%3E-for-Imm64"],[107,"impl-From%3Ci32%3E-for-Imm64"],[108,"impl-From%3Cusize%3E-for-Imm64"],[109,"impl-From%3Cu64%3E-for-Imm64"],[110,"impl-From%3Cu8%3E-for-Imm64"],[111,"impl-From%3Cisize%3E-for-Imm64"],[112,"impl-From%3Cu16%3E-for-Imm64"],[134,"impl-Mov%3CReg64,+MemOp%3E-for-Asm"],[135,"impl-Mov%3CReg64,+Reg64%3E-for-Asm"],[136,"impl-Mov%3CReg16,+Reg16%3E-for-Asm"],[137,"impl-Mov%3CMemOp,+Reg32%3E-for-Asm"],[138,"impl-Mov%3CReg8,+Imm8%3E-for-Asm"],[139,"impl-Mov%3CMemOp,+Reg16%3E-for-Asm"],[140,"impl-Mov%3CReg32,+Imm32%3E-for-Asm"],[141,"impl-Mov%3CMemOp,+Reg8%3E-for-Asm"],[142,"impl-Mov%3CMemOp,+Reg64%3E-for-Asm"],[143,"impl-Mov%3CReg8,+MemOp%3E-for-Asm"],[144,"impl-Mov%3CMemOp,+Imm16%3E-for-Asm"],[145,"impl-Mov%3CReg8,+Reg8%3E-for-Asm"],[146,"impl-Mov%3CReg64,+Imm64%3E-for-Asm"],[147,"impl-Mov%3CReg16,+MemOp%3E-for-Asm"],[148,"impl-Mov%3CReg32,+MemOp%3E-for-Asm"],[149,"impl-Mov%3CReg16,+Imm16%3E-for-Asm"],[150,"impl-Mov%3CReg32,+Reg32%3E-for-Asm"],[155,"impl-Pop%3CReg16%3E-for-Asm"],[156,"impl-Pop%3CReg64%3E-for-Asm"],[157,"impl-Push%3CReg64%3E-for-Asm"],[158,"impl-Push%3CReg16%3E-for-Asm"],[204,"impl-Test%3CMemOp,+Imm16%3E-for-Asm"],[205,"impl-Test%3CReg64,+Reg64%3E-for-Asm"],[206,"impl-Test%3CReg32,+Reg32%3E-for-Asm"]]}],\
["tiny_vm",{"doc":"TinyVm example.","t":"PPPPPPPFPPPFPGGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHHNNNNNNNNNNNNNNNNNNNNNNN","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],[10,11],[-1,-2,[],[]],[-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":[[5,"Fixup",0],[6,"TinyInsn",0],[5,"Vec",75],[1,"tuple"],[6,"TinyReg",0],[5,"TinyVm",0],[1,"bool"],[5,"Formatter",76],[8,"Result",76],[5,"PhysAddr",0],[1,"usize"],[1,"u16"],[6,"Result",77],[5,"TypeId",78]],"b":[]}]\
]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);