diff options
Diffstat (limited to '3rdparty/asmjit/src/asmjit.natvis')
-rw-r--r-- | 3rdparty/asmjit/src/asmjit.natvis | 146 |
1 files changed, 132 insertions, 14 deletions
diff --git a/3rdparty/asmjit/src/asmjit.natvis b/3rdparty/asmjit/src/asmjit.natvis index 18a083c6c12..b73d8487276 100644 --- a/3rdparty/asmjit/src/asmjit.natvis +++ b/3rdparty/asmjit/src/asmjit.natvis @@ -35,25 +35,25 @@ </Type> <Type Name="asmjit::Operand_"> - <Intrinsic Name="opType" Expression="(unsigned int)(_signature & 0x7)"/> - <Intrinsic Name="opSize" Expression="(_signature >> 24) & 0xFF"/> + <Intrinsic Name="opType" Expression="(unsigned int)(_signature & 0x7)" /> + <Intrinsic Name="opSize" Expression="(_signature >> 24) & 0xFF" /> - <Intrinsic Name="regType" Expression="(_signature >> 3) & 0x1F"/> - <Intrinsic Name="regGroup" Expression="(_signature >> 8) & 0xF"/> + <Intrinsic Name="regType" Expression="(_signature >> 3) & 0x1F" /> + <Intrinsic Name="regGroup" Expression="(_signature >> 8) & 0xF" /> - <Intrinsic Name="memBaseType" Expression="(_signature >> 3) & 0x1F"/> - <Intrinsic Name="memIndexType" Expression="(_signature >> 8) & 0x1F"/> - <Intrinsic Name="memAddrType" Expression="(_signature >> 13) & 0x3"/> - <Intrinsic Name="memRegHome" Expression="(_signature >> 15) & 0x1"/> + <Intrinsic Name="memBaseType" Expression="(_signature >> 3) & 0x1F" /> + <Intrinsic Name="memIndexType" Expression="(_signature >> 8) & 0x1F" /> + <Intrinsic Name="memAddrType" Expression="(_signature >> 13) & 0x3" /> + <Intrinsic Name="memRegHome" Expression="(_signature >> 15) & 0x1" /> - <Intrinsic Name="memBaseId" Expression="_baseId"/> - <Intrinsic Name="memIndexId" Expression="_data[0]"/> + <Intrinsic Name="memBaseId" Expression="_baseId" /> + <Intrinsic Name="memIndexId" Expression="_data[0]" /> - <Intrinsic Name="memOffset32b" Expression="(__int64)int(_data[1])"/> - <Intrinsic Name="memOffset64b" Expression="(__int64) ((unsigned __int64)_baseId << 32) | ((unsigned __int64)_data[1])"/> - <Intrinsic Name="memOffset" Expression="memBaseType() != 0 ? memOffset32b() : memOffset64b()"/> + <Intrinsic Name="memOffset32b" Expression="(__int64)int(_data[1])" /> + <Intrinsic Name="memOffset64b" Expression="(__int64) ((unsigned __int64)_baseId << 32) | ((unsigned __int64)_data[1])" /> + <Intrinsic Name="memOffset" Expression="memBaseType() != 0 ? memOffset32b() : memOffset64b()" /> - <Intrinsic Name="immValue" Expression="((__int64)_data[1] << 32) | (__int64)_data[0]"/> + <Intrinsic Name="immValue" Expression="((__int64)_data[1] << 32) | (__int64)_data[0]" /> <DisplayString Condition="opType() == 0">[None]</DisplayString> <DisplayString Condition="opType() == 1">[Reg] {{ id={_baseId, d} group={regGroup(), d} type={regType(), d} size={opSize(), d} }}</DisplayString> @@ -80,4 +80,122 @@ <Item Name="_data[ImmLo]" Condition="opType() == 3">_data[1]</Item> </Expand> </Type> + + <Type Name="asmjit::FuncValue"> + <Intrinsic Name="isReg" Expression="(_data & asmjit::FuncValue::kFlagIsReg) != 0" /> + <Intrinsic Name="isStack" Expression="(_data & asmjit::FuncValue::kFlagIsStack) != 0" /> + <Intrinsic Name="isIndirect" Expression="(_data & asmjit::FuncValue::kFlagIsIndirect) != 0" /> + <Intrinsic Name="isDone" Expression="(_data & asmjit::FuncValue::kFlagIsDone) != 0" /> + + <Intrinsic Name="typeId" Expression="((_data & asmjit::FuncValue::kTypeIdMask) >> asmjit::FuncValue::kTypeIdShift)" /> + <Intrinsic Name="regId" Expression="((_data & asmjit::FuncValue::kRegIdMask) >> asmjit::FuncValue::kRegIdShift)" /> + <Intrinsic Name="regType" Expression="((_data & asmjit::FuncValue::kRegTypeMask) >> asmjit::FuncValue::kRegTypeShift)" /> + <Intrinsic Name="stackOffset" Expression="((_data & asmjit::FuncValue::kStackOffsetMask) >> asmjit::FuncValue::kStackOffsetShift)" /> + + <DisplayString Condition="isReg()">[RegValue {{ regType={regType()} indirect={isIndirect()} done={isDone()} }}]</DisplayString> + <DisplayString Condition="isStack()">[StackValue {{ indirect={isIndirect()} done={isDone()} }}]</DisplayString> + <DisplayString Condition="!isReg() && !isStack()">[Unknown]</DisplayString> + + <Expand HideRawView="true"> + <Item Name="data">_data</Item> + <Item Name="typeId">(asmjit::Type::Id)(typeId())</Item> + <Item Name="regType" Condition="isReg()">(asmjit::BaseReg::RegType)regType()</Item> + <Item Name="regId" Condition="isReg()">regId()</Item> + <Item Name="stackOffset" Condition="isStack()">stackOffset()</Item> + </Expand> + </Type> + + <Type Name="asmjit::BaseNode"> + <Intrinsic Name="nodeType" Expression="_any._nodeType" /> + + <Intrinsic Name="isInst" Expression="nodeType() == asmjit::BaseNode::kNodeInst"></Intrinsic> + <Intrinsic Name="isSection" Expression="nodeType() == asmjit::BaseNode::kNodeSection"></Intrinsic> + <Intrinsic Name="isLabel" Expression="nodeType() == asmjit::BaseNode::kNodeLabel"></Intrinsic> + <Intrinsic Name="isAlign" Expression="nodeType() == asmjit::BaseNode::kNodeAlign"></Intrinsic> + <Intrinsic Name="isEmbedData" Expression="nodeType() == asmjit::BaseNode::kNodeEmbedData"></Intrinsic> + <Intrinsic Name="isEmbedLabel" Expression="nodeType() == asmjit::BaseNode::kNodeEmbedLabel"></Intrinsic> + <Intrinsic Name="isEmbedLabelDelta" Expression="nodeType() == asmjit::BaseNode::kNodeEmbedLabelDelta"></Intrinsic> + <Intrinsic Name="isConstPool" Expression="nodeType() == asmjit::BaseNode::kNodeConstPool"></Intrinsic> + <Intrinsic Name="isComment" Expression="nodeType() == asmjit::BaseNode::kNodeComment"></Intrinsic> + <Intrinsic Name="isSentinel" Expression="nodeType() == asmjit::BaseNode::kNodeSentinel"></Intrinsic> + <Intrinsic Name="isJump" Expression="nodeType() == asmjit::BaseNode::kNodeJump"></Intrinsic> + <Intrinsic Name="isFunc" Expression="nodeType() == asmjit::BaseNode::kNodeFunc"></Intrinsic> + <Intrinsic Name="isFuncRet" Expression="nodeType() == asmjit::BaseNode::kNodeFuncRet"></Intrinsic> + <Intrinsic Name="isInvoke" Expression="nodeType() == asmjit::BaseNode::kNodeInvoke"></Intrinsic> + + <Intrinsic Name="actsAsInst" Expression="isInst() || isJump() || isFunc() || isFuncRet() || isInvoke()" /> + <Intrinsic Name="actsAsLabel" Expression="isLabel() || isFunc()" /> + + <DisplayString Condition="isInst()">[InstNode]</DisplayString> + <DisplayString Condition="isSentinel()">[SectionNode]</DisplayString> + <DisplayString Condition="isLabel()">[LabelNode]</DisplayString> + <DisplayString Condition="isAlign()">[AlignNode]</DisplayString> + <DisplayString Condition="isEmbedData()">[EmbedDataNode]</DisplayString> + <DisplayString Condition="isEmbedLabel()">[EmbedLabelNode]</DisplayString> + <DisplayString Condition="isEmbedLabelDelta()">[EmbedLabelDeltaNode]</DisplayString> + <DisplayString Condition="isConstPool()">[ConstPoolNode]</DisplayString> + <DisplayString Condition="isComment()">[CommentNode]</DisplayString> + <DisplayString Condition="isSentinel()">[SentinelNode]</DisplayString> + <DisplayString Condition="isJump()">[JumpNode]</DisplayString> + <DisplayString Condition="isFunc()">[FuncNode]</DisplayString> + <DisplayString Condition="isFuncRet()">[FuncRetNode]</DisplayString> + <DisplayString Condition="isInvoke()">[InvokeNode]</DisplayString> + <DisplayString Condition="nodeType() == 0 || nodeType() > 18">[UnknownNode {nodeType(), d}]</DisplayString> + + <Expand HideRawView="true"> + <Item Name="prev">_prev</Item> + <Item Name="next">_next</Item> + + <Item Name="nodeType">(asmjit::BaseNode::NodeType)_any._nodeType</Item> + <Item Name="nodeFlags">(asmjit::BaseNode::Flags)_any._nodeFlags</Item> + + <Item Name="position">_position</Item> + <Item Name="userData.u64">_userDataU64</Item> + <Item Name="userData.ptr">_userDataPtr</Item> + <Item Name="passData">_passData</Item> + <Item Name="inlineComment">_inlineComment, s8</Item> + + <Item Name="baseInst" Condition="actsAsInst()">((asmjit::InstNode*)this)->_baseInst</Item> + <Item Name="opCount" Condition="actsAsInst()">_inst._opCount</Item> + <Item Name="opCapacity" Condition="actsAsInst()">_inst._opCapacity</Item> + <Item Name="opArray" Condition="actsAsInst()">((asmjit::InstNode*)this)->_opArray, [_inst._opCount]</Item> + + <Item Name="sectionId" Condition="isSection()">((asmjit::SectionNode*)this)->_id</Item> + <Item Name="nextSection" Condition="isSection()">((asmjit::SectionNode*)this)->_nextSection</Item> + + <Item Name="labelId" Condition="isLabel()">((asmjit::LabelNode*)this)->_id</Item> + + <Item Name="alignMode" Condition="isAlign()">((asmjit::AlignNode*)this)->_alignMode</Item> + <Item Name="alignment" Condition="isAlign()">((asmjit::AlignNode*)this)->_alignment</Item> + + <Item Name="typeId" Condition="isEmbedData()">_embed._typeId, d</Item> + <Item Name="typeSize" Condition="isEmbedData()">_embed._typeSize, d</Item> + <Item Name="itemCount" Condition="isEmbedData()">((asmjit::EmbedDataNode*)this)->_itemCount</Item> + <Item Name="repeatCount" Condition="isEmbedData()">((asmjit::EmbedDataNode*)this)->_repeatCount</Item> + <Item Name="inlineData" Condition="isEmbedData()">((asmjit::EmbedDataNode*)this)->_inlineData</Item> + <Item Name="externalData" Condition="isEmbedData()">((asmjit::EmbedDataNode*)this)->_externalData</Item> + + <Item Name="labelId" Condition="isEmbedLabel()">((asmjit::EmbedLabelNode*)this)->_id</Item> + + <Item Name="labelId" Condition="isEmbedLabelDelta()">((asmjit::EmbedLabelDeltaNode*)this)->_id</Item> + <Item Name="baseId" Condition="isEmbedLabelDelta()">((asmjit::EmbedLabelDeltaNode*)this)->_baseId</Item> + <Item Name="dataSize" Condition="isEmbedLabelDelta()">((asmjit::EmbedLabelDeltaNode*)this)->_dataSize</Item> + + <Item Name="constPool" Condition="isConstPool()">((asmjit::ConstPoolNode*)this)->_constPool</Item> + + <Item Name="sentinel.sentinelType" Condition="isSentinel()">(asmjit::SentinelNode::SentinelType)_sentinel._sentinelType</Item> + + <Item Name="annotation" Condition="isJump()">((asmjit::JumpNode*)this)->_annotation</Item> + + <Item Name="funcDetail" Condition="isFunc()">((asmjit::FuncNode*)this)->_funcDetail</Item> + <Item Name="frame" Condition="isFunc()">((asmjit::FuncNode*)this)->_frame</Item> + <Item Name="exitNode" Condition="isFunc()">((asmjit::FuncNode*)this)->_exitNode</Item> + <Item Name="end" Condition="isFunc()">((asmjit::FuncNode*)this)->_end</Item> + <Item Name="args" Condition="isFunc()">((asmjit::FuncNode*)this)->_args, [((asmjit::FuncNode*)this)->_funcDetail._argCount]</Item> + + <Item Name="funcDetail" Condition="isInvoke()">((asmjit::InvokeNode*)this)->_funcDetail</Item> + <Item Name="rets" Condition="isInvoke()">((asmjit::InvokeNode*)this)->_rets, [((asmjit::InvokeNode*)this)->_funcDetail._retCount]</Item> + <Item Name="args" Condition="isInvoke()">((asmjit::InvokeNode*)this)->_args, [((asmjit::InvokeNode*)this)->_funcDetail._argCount]</Item> + </Expand> + </Type> </AutoVisualizer> |