From 920474115c3182b19008598b0def86cb8fdf1318 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Thu, 30 Jun 2016 16:14:32 +0200 Subject: x86-64-asm: More opcodes Implement some more opcodes, syscall, sysret, lfence, mfence, sfence. --- i386-asm.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'i386-asm.c') diff --git a/i386-asm.c b/i386-asm.c index 2ffa53b..a036e49 100644 --- a/i386-asm.c +++ b/i386-asm.c @@ -893,6 +893,15 @@ ST_FUNC void asm_opcode(TCCState *s1, int opcode) pc = 0; if (pa->instr_type & OPC_MODRM) { + if (!nb_ops) { + /* A modrm opcode without operands is a special case (e.g. mfence). + It has a group and acts as if there's an register operand 0 + (ax). */ + i = 0; + ops[i].type = OP_REG; + ops[i].reg = 0; + goto modrm_found; + } /* first look for an ea operand */ for(i = 0;i < nb_ops; i++) { if (op_type[i] & OP_EA) -- cgit v1.3.1