#include "x86regs.h"Go to the source code of this file.
|
|
Definition at line 28 of file registers.h. |
|
|
Definition at line 188 of file registers.h. Referenced by Instruction::GetUseType(), INSTPROCDECL(), InstructionDecoder::mod_reg2(), ScanningComplexReg::ProcessInstruction(), and Instruction::WriteRegUsage(). |
|
|
|
|
|
Referenced by CodeParser::ExecuteComplexReferenceReg(), get_regnum(), Instruction::GetUseType(), and ScanningComplexReg::ScanningComplexReg(). |
|
|
Definition at line 30 of file registers.h.
00030 {
00031 null_reg = -1,
00032 #include "x86regs.h"
00033 __reg_Count
00034 } reg_t;
00035 #undef DEFINE_REG
00036
00037 typedef struct reg_info
00038 {
00039 enum reg_size { bit = 0,byte = 1,word = 2,dword = 4,packetI = 8,packetF = 16,floating = 10};
00040 enum reg_size size;
00041 enum reg_type { flag,byte_low_low,byte_low_high,word_low,general,segment,special };
00042 enum reg_type type;
00043 const char* name;
00044 int completeReg; // valido per parziali, uguale a reg se non parziale
00045 unsigned partialMask; // !!! quanti bits ?
00046 unsigned char GetByteSize() const
00047 { return (unsigned char)size; }
00048 } reg_info;
00049
00050 #ifdef DEBUG
00051 #include <stdexcept>
00052 #endif
00053
00054 class RegistryInfo
00055 {
00056 public:
00057 static const reg_info* GetInfo(const char* name);
00058 static const reg_info* GetInfo(reg_t i);
00059 static reg_t GetIndex(const char* name);
00060 #ifdef DEBUG
00061 static reg_t GetRegSafe(const char* name)
00062 {
00063 reg_t reg = GetIndex(name);
00064 if (reg == null_reg)
00065 throw std::runtime_error(name);
00066 return reg;
00067 }
00068 #endif
00069 };
00070
00071 #define REG(s) __reg_##s
00072
00073 #endif //FILE_REGISTERS_H
|
1.2.15