From 553c1e74e6ddb089584c546e2a7bfda718967d4d Mon Sep 17 00:00:00 2001 From: jdh8d <jdh8d@git.zephyr-software.com> Date: Mon, 12 Feb 2018 16:13:49 +0000 Subject: [PATCH] extensions for xor globals, and moving xorg to libIRDB-decoded. Former-commit-id: 803078e95f5a28ee831858404869326dcb89fd2e --- libIRDB/include/decode/operand.hpp | 2 ++ libIRDB/src/decode/operand.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/libIRDB/include/decode/operand.hpp b/libIRDB/include/decode/operand.hpp index 37d391879..8a725f10e 100644 --- a/libIRDB/include/decode/operand.hpp +++ b/libIRDB/include/decode/operand.hpp @@ -35,11 +35,13 @@ class DecodedOperand_t bool hasIndexRegister() const; uint32_t getBaseRegister() const; uint32_t getIndexRegister() const; + bool hasMemoryDisplacement() const; virtual_offset_t getMemoryDisplacement() const; bool isPcrel() const; uint32_t getScaleValue() const; uint32_t getMemoryDisplacementEncodingSize() const; uint32_t getArgumentSizeInBytes() const; + uint32_t getArgumentSizeInBits() const; bool isRead() const; bool isWritten() const; diff --git a/libIRDB/src/decode/operand.cpp b/libIRDB/src/decode/operand.cpp index 6b02b80d5..8e9fbce38 100644 --- a/libIRDB/src/decode/operand.cpp +++ b/libIRDB/src/decode/operand.cpp @@ -194,6 +194,14 @@ uint32_t DecodedOperand_t::getScaleValue() const return t->Memory.Scale; /* 0 indicates no scale */ } +bool DecodedOperand_t::hasMemoryDisplacement() const +{ + if(!isMemory()) + throw std::logic_error("GetBaseRegister called on not memory operand"); + ARGTYPE *t=static_cast<ARGTYPE*>(arg_data); + return t->Memory.DisplacementAddr!=0; +} + virtual_offset_t DecodedOperand_t::getMemoryDisplacement() const { if(!isMemory()) @@ -220,6 +228,12 @@ uint32_t DecodedOperand_t::getArgumentSizeInBytes() const return t->ArgSize/8; } +uint32_t DecodedOperand_t::getArgumentSizeInBits() const +{ + ARGTYPE *t=static_cast<ARGTYPE*>(arg_data); + return t->ArgSize; +} + bool DecodedOperand_t::hasSegmentRegister() const { ARGTYPE *t=static_cast<ARGTYPE*>(arg_data); -- GitLab