#include "semanticsModule.h"
#include <cassert>
#include <cstdio>
#include <iostream>
#include "integerOps.h"
#include "AsmUnparser_compat.h"
Include dependency graph for x86InstructionSemantics.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Classes | |
| struct | X86InstructionSemantics< Policy, WordType > |
| struct | X86InstructionSemantics< Policy, WordType >::Exception |
Defines | |
| #define | Word(Len) WordType<(Len)> |
| #define | FLAGCOMBO_ne policy.invert(readRegister<1>(REG_ZF)) |
| #define | FLAGCOMBO_e readRegister<1>(REG_ZF) |
| #define | FLAGCOMBO_no policy.invert(readRegister<1>(REG_OF)) |
| #define | FLAGCOMBO_o readRegister<1>(REG_OF) |
| #define | FLAGCOMBO_ns policy.invert(readRegister<1>(REG_SF)) |
| #define | FLAGCOMBO_s readRegister<1>(REG_SF) |
| #define | FLAGCOMBO_po policy.invert(readRegister<1>(REG_PF)) |
| #define | FLAGCOMBO_pe readRegister<1>(REG_PF) |
| #define | FLAGCOMBO_ae policy.invert(readRegister<1>(REG_CF)) |
| #define | FLAGCOMBO_b readRegister<1>(REG_CF) |
| #define | FLAGCOMBO_be policy.or_(FLAGCOMBO_b, FLAGCOMBO_e) |
| #define | FLAGCOMBO_a policy.and_(FLAGCOMBO_ae, FLAGCOMBO_ne) |
| #define | FLAGCOMBO_l policy.xor_(readRegister<1>(REG_SF), readRegister<1>(REG_OF)) |
| #define | FLAGCOMBO_ge policy.invert(policy.xor_(readRegister<1>(REG_SF), readRegister<1>(REG_OF))) |
| #define | FLAGCOMBO_le policy.or_(FLAGCOMBO_e, FLAGCOMBO_l) |
| #define | FLAGCOMBO_g policy.and_(FLAGCOMBO_ge, FLAGCOMBO_ne) |
| #define | FLAGCOMBO_cxz policy.equalToZero(readRegister<16>(REG_CX)) |
| #define | FLAGCOMBO_ecxz policy.equalToZero(readRegister<32>(REG_ECX)) |
| #define | JUMP(tag) |
| #define | SET(tag) |
| #define | CMOV(tag) |
Functions | |
| static X86SegmentRegister | getSegregFromMemoryReference (SgAsmMemoryReferenceExpression *mr) |
| #define Word | ( | Len | ) | WordType<(Len)> |
| #define FLAGCOMBO_ne policy.invert(readRegister<1>(REG_ZF)) |
| #define FLAGCOMBO_e readRegister<1>(REG_ZF) |
| #define FLAGCOMBO_no policy.invert(readRegister<1>(REG_OF)) |
| #define FLAGCOMBO_o readRegister<1>(REG_OF) |
| #define FLAGCOMBO_ns policy.invert(readRegister<1>(REG_SF)) |
| #define FLAGCOMBO_s readRegister<1>(REG_SF) |
| #define FLAGCOMBO_po policy.invert(readRegister<1>(REG_PF)) |
| #define FLAGCOMBO_pe readRegister<1>(REG_PF) |
| #define FLAGCOMBO_ae policy.invert(readRegister<1>(REG_CF)) |
| #define FLAGCOMBO_b readRegister<1>(REG_CF) |
| #define FLAGCOMBO_be policy.or_(FLAGCOMBO_b, FLAGCOMBO_e) |
| #define FLAGCOMBO_a policy.and_(FLAGCOMBO_ae, FLAGCOMBO_ne) |
| #define FLAGCOMBO_l policy.xor_(readRegister<1>(REG_SF), readRegister<1>(REG_OF)) |
| #define FLAGCOMBO_ge policy.invert(policy.xor_(readRegister<1>(REG_SF), readRegister<1>(REG_OF))) |
| #define FLAGCOMBO_le policy.or_(FLAGCOMBO_e, FLAGCOMBO_l) |
| #define FLAGCOMBO_g policy.and_(FLAGCOMBO_ge, FLAGCOMBO_ne) |
| #define FLAGCOMBO_cxz policy.equalToZero(readRegister<16>(REG_CX)) |
| #define FLAGCOMBO_ecxz policy.equalToZero(readRegister<32>(REG_ECX)) |
| #define JUMP | ( | tag | ) |
Value:
{ \
if (operands.size()!=1) \
throw Exception("instruction must have one operand", insn); \
writeRegister(REG_EIP, policy.ite(FLAGCOMBO_##tag, \
read32(operands[0]), \
readRegister<32>(REG_EIP))); \
}
| #define SET | ( | tag | ) |
Value:
{ \
if (operands.size()!=1) \
throw Exception("instruction must have one operand", insn); \
write8(operands[0], policy.concat(FLAGCOMBO_##tag, number<7>(0))); \
}
| #define CMOV | ( | tag | ) |
Value:
{ \
if (operands.size()!=2) \
throw Exception("instruction must have two operands", insn); \
switch (numBytesInAsmType(operands[0]->get_type())) { \
case 2: write16(operands[0], policy.ite(FLAGCOMBO_##tag, read16(operands[1]), read16(operands[0]))); break; \
case 4: write32(operands[0], policy.ite(FLAGCOMBO_##tag, read32(operands[1]), read32(operands[0]))); break; \
default: throw Exception("size not implemented", insn); \
\
} \
}
| static X86SegmentRegister getSegregFromMemoryReference | ( | SgAsmMemoryReferenceExpression * | mr | ) | [inline, static] |
1.4.7