Definition at line 270 of file EVMDisassembler.c.
273 unsigned char opcode;
285 MI->address = address;
286 MI->OpcodePub = MI->Opcode = opcode;
290 if (code_len < 1 +
len) {
300 if (MI->flat_insn->detail) {
304 if (MI->flat_insn->detail->evm.pop) {
305 MI->flat_insn->detail->groups[MI->flat_insn->detail->groups_count] =
EVM_GRP_STACK_READ;
306 MI->flat_insn->detail->groups_count++;
309 if (MI->flat_insn->detail->evm.push) {
311 MI->flat_insn->detail->groups_count++;
329 MI->flat_insn->detail->groups[MI->flat_insn->detail->groups_count] =
EVM_GRP_MATH;
330 MI->flat_insn->detail->groups_count++;
338 MI->flat_insn->detail->groups[MI->flat_insn->detail->groups_count] =
EVM_GRP_MEM_WRITE;
339 MI->flat_insn->detail->groups_count++;
349 MI->flat_insn->detail->groups[MI->flat_insn->detail->groups_count] =
EVM_GRP_MEM_READ;
350 MI->flat_insn->detail->groups_count++;
355 MI->flat_insn->detail->groups_count++;
359 MI->flat_insn->detail->groups[MI->flat_insn->detail->groups_count] =
EVM_GRP_STORE_READ;
360 MI->flat_insn->detail->groups_count++;
365 MI->flat_insn->detail->groups[MI->flat_insn->detail->groups_count] =
EVM_GRP_JUMP;
366 MI->flat_insn->detail->groups_count++;
371 MI->flat_insn->detail->groups[MI->flat_insn->detail->groups_count] =
EVM_GRP_HALT;
372 MI->flat_insn->detail->groups_count++;
static short opcodes[256]
void EVM_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
@ EVM_GRP_MATH
math instructions
@ EVM_GRP_STORE_READ
instructions read from storage
@ EVM_GRP_STACK_WRITE
instructions write to stack
@ EVM_GRP_JUMP
all jump instructions
@ EVM_GRP_MEM_WRITE
instructions write to memory
@ EVM_GRP_MEM_READ
instructions read from memory
@ EVM_GRP_STACK_READ
instructions read from stack
@ EVM_GRP_HALT
instructions halt execution
@ EVM_GRP_STORE_WRITE
instructions write to storage
#define offsetof(type, member)
return memset(p, 0, total)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
References MCInst::address, MCInst::evm_data, EVM_get_insn_id(), EVM_GRP_HALT, EVM_GRP_JUMP, EVM_GRP_MATH, EVM_GRP_MEM_READ, EVM_GRP_MEM_WRITE, EVM_GRP_STACK_READ, EVM_GRP_STACK_WRITE, EVM_GRP_STORE_READ, EVM_GRP_STORE_WRITE, EVM_INS_ADD, EVM_INS_ADDMOD, EVM_INS_CALL, EVM_INS_CALLCODE, EVM_INS_CALLDATACOPY, EVM_INS_CODECOPY, EVM_INS_CREATE, EVM_INS_DELEGATECALL, EVM_INS_DIV, EVM_INS_EXP, EVM_INS_EXTCODECOPY, EVM_INS_JUMP, EVM_INS_JUMPI, EVM_INS_MLOAD, EVM_INS_MOD, EVM_INS_MSTORE, EVM_INS_MSTORE8, EVM_INS_MUL, EVM_INS_MULMOD, EVM_INS_PUSH1, EVM_INS_PUSH32, EVM_INS_RETURN, EVM_INS_REVERT, EVM_INS_SDIV, EVM_INS_SIGNEXTEND, EVM_INS_SLOAD, EVM_INS_SMOD, EVM_INS_SSTORE, EVM_INS_STOP, EVM_INS_SUB, EVM_INS_SUICIDE, MCInst::flat_insn, len, memcpy(), memset(), offsetof, MCInst::Opcode, MCInst::OpcodePub, and opcodes.