add Ethereum VM architecture
diff --git a/cs.c b/cs.c
index f240457..2b53ac7 100644
--- a/cs.c
+++ b/cs.c
@@ -66,6 +66,7 @@
extern void SystemZ_enable(void);
extern void XCore_enable(void);
extern void TMS320C64x_enable(void);
+extern void EVM_enable(void);
static void archs_enable(void)
{
@@ -107,6 +108,9 @@
#ifdef CAPSTONE_HAS_TMS320C64X
TMS320C64x_enable();
#endif
+#ifdef CAPSTONE_HAS_EVM
+ EVM_enable();
+#endif
initialized = true;
@@ -187,7 +191,7 @@
(1 << CS_ARCH_PPC) | (1 << CS_ARCH_SPARC) |
(1 << CS_ARCH_SYSZ) | (1 << CS_ARCH_XCORE) |
(1 << CS_ARCH_M68K) | (1 << CS_ARCH_TMS320C64X) |
- (1 << CS_ARCH_M680X));
+ (1 << CS_ARCH_M680X) | (1 << CS_ARCH_EVM));
if ((unsigned int)query < CS_ARCH_MAX)
return all_arch & (1 << query);
@@ -447,6 +451,9 @@
case CS_ARCH_M680X:
// M680X alignment is 1.
return 1;
+ case CS_ARCH_EVM:
+ // EVM alignment is 1.
+ return 1;
}
}
@@ -1153,6 +1160,13 @@
if (insn->detail->m680x.operands[i].type == (m680x_op_type)op_type)
count++;
break;
+ case CS_ARCH_EVM:
+#if 0
+ for (i = 0; i < insn->detail->evm.op_count; i++)
+ if (insn->detail->evm.operands[i].type == (evm_op_type)op_type)
+ count++;
+#endif
+ break;
}
return count;
@@ -1278,6 +1292,16 @@
return i;
}
break;
+ case CS_ARCH_EVM:
+#if 0
+ for (i = 0; i < insn->detail->evm.op_count; i++) {
+ if (insn->detail->evm.operands[i].type == (evm_op_type)op_type)
+ count++;
+ if (count == post)
+ return i;
+ }
+#endif
+ break;
}
return -1;