use super::*;
impl VMBridge {
pub(crate) fn initialize_instruction_mapping(&mut self) {
self.instruction_mapping.insert(0x9E, Self::handle_add);
self.instruction_mapping.insert(0x9F, Self::handle_sub);
self.instruction_mapping.insert(0xA0, Self::handle_mul);
self.instruction_mapping.insert(0xA1, Self::handle_div);
self.instruction_mapping.insert(0xA2, Self::handle_mod);
self.instruction_mapping.insert(0xA5, Self::handle_modmul);
self.instruction_mapping.insert(0xA6, Self::handle_modpow);
self.instruction_mapping.insert(0xA8, Self::handle_shl);
self.instruction_mapping.insert(0xA9, Self::handle_shr);
self.instruction_mapping.insert(0x91, Self::handle_and);
self.instruction_mapping.insert(0x92, Self::handle_or);
self.instruction_mapping.insert(0x93, Self::handle_xor);
self.instruction_mapping.insert(0xB5, Self::handle_lt);
self.instruction_mapping.insert(0xB7, Self::handle_gt);
self.instruction_mapping.insert(0x97, Self::handle_eq);
self.instruction_mapping.insert(0x98, Self::handle_ne);
self.instruction_mapping.insert(0xB3, Self::handle_eq);
self.instruction_mapping.insert(0xB4, Self::handle_ne);
self.instruction_mapping.insert(0x10, Self::handle_push0);
self.instruction_mapping.insert(0x11, Self::handle_push1);
self.instruction_mapping.insert(0x45, Self::handle_drop);
self.instruction_mapping.insert(0x4A, Self::handle_dup);
self.instruction_mapping.insert(0x50, Self::handle_swap);
self.instruction_mapping.insert(0x40, Self::handle_ret);
self.instruction_mapping.insert(0x22, Self::handle_jmp);
self.instruction_mapping.insert(0x24, Self::handle_jmpif);
self.instruction_mapping.insert(0x26, Self::handle_jmpifnot);
self.instruction_mapping.insert(0x25, Self::handle_jmpif); self.instruction_mapping.insert(0x27, Self::handle_jmpifnot);
self.instruction_mapping.insert(0x51, Self::handle_mload);
self.instruction_mapping.insert(0x52, Self::handle_mstore);
self.instruction_mapping.insert(0x53, Self::handle_mstore8);
self.instruction_mapping.insert(0x54, Self::handle_sload);
self.instruction_mapping.insert(0x55, Self::handle_sstore);
}
pub(crate) fn initialize_system_calls(&mut self) {
self.system_calls
.insert("keccak256".to_string(), Self::syscall_keccak256);
self.system_calls
.insert("sha256".to_string(), Self::syscall_sha256);
self.system_calls
.insert("ecrecover".to_string(), Self::syscall_ecrecover);
self.system_calls
.insert("verify".to_string(), Self::syscall_verify);
self.system_calls
.insert("blake2f".to_string(), Self::syscall_blake2f);
self.system_calls
.insert("modexp".to_string(), Self::syscall_modexp);
}
}