asmjit.natvis (18084B)
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!-- asmjit visualizer for Visual Studio (natvis) --> 4 5 <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> 6 <Type Name="asmjit::String"> 7 <Intrinsic Name="isSmall" Expression="(_type < 0x1F)"/> 8 <DisplayString Condition="isSmall()">{_small.data, s8}</DisplayString> 9 <DisplayString Condition="!isSmall()">{_large.data, s8}</DisplayString> 10 <Expand HideRawView="true"> 11 <Synthetic Name="_type"> 12 <DisplayString Condition="(_type < 0x1F)">Small</DisplayString> 13 <DisplayString Condition="(_type == 0x1F)">Large</DisplayString> 14 <DisplayString Condition="(_type > 0x1F)">External</DisplayString> 15 </Synthetic> 16 <Item Name="_size" Condition="isSmall()" ExcludeView="simple">(int)_small.type, d</Item> 17 <Item Name="_size" Condition="!isSmall()" ExcludeView="simple">_large.size, d</Item> 18 <Item Name="_capacity" Condition="isSmall()" ExcludeView="simple">asmjit::String::kSSOCapacity, d</Item> 19 <Item Name="_capacity" Condition="!isSmall()" ExcludeView="simple">_large.capacity, d</Item> 20 <Item Name="_data" Condition="isSmall()" ExcludeView="simple">_small.data, s8</Item> 21 <Item Name="_data" Condition="!isSmall()" ExcludeView="simple">_large.data, s8</Item> 22 </Expand> 23 </Type> 24 25 <Type Name="asmjit::ArenaVector<*>"> 26 <DisplayString>{{ [size={_size, d} capacity={_capacity, d}] }}</DisplayString> 27 <Expand> 28 <Item Name="_size" ExcludeView="simple">_size, d</Item> 29 <Item Name="_capacity" ExcludeView="simple">_capacity, d</Item> 30 <ArrayItems> 31 <Size>_size</Size> 32 <ValuePointer>(($T1*)_data)</ValuePointer> 33 </ArrayItems> 34 </Expand> 35 </Type> 36 37 <Type Name="asmjit::OperandSignature"> 38 <Intrinsic Name="op_type" Expression="(asmjit::OperandType)(_bits & 0x7)" /> 39 <Intrinsic Name="opSize" Expression="(_bits >> 24) & 0xFF" /> 40 <Intrinsic Name="reg_type" Expression="(asmjit::RegType)((_bits >> 3) & 0x1F)" /> 41 <Intrinsic Name="reg_group" Expression="(asmjit::RegGroup)((_bits >> 8) & 0xF)" /> 42 <Intrinsic Name="memBaseType" Expression="(asmjit::RegType)((_bits >> 3) & 0x1F)" /> 43 <Intrinsic Name="memIndexType" Expression="(asmjit::RegType)((_bits >> 8) & 0x1F)" /> 44 <Intrinsic Name="memRegHome" Expression="(bool)((_bits >> 13) & 0x1)" /> 45 <Intrinsic Name="memX86Segment" Expression="(asmjit::x86::SReg::Id)((_bits >> 18) & 0x7)" /> 46 <Intrinsic Name="memX86AddrType" Expression="(asmjit::x86::Mem::AddrType)((_bits >> 14) & 0x3)" /> 47 <Intrinsic Name="memX86ShiftValue" Expression="((_bits >> 16) & 0x3)" /> 48 <Intrinsic Name="memX86Broadcast" Expression="(asmjit::x86::Mem::Broadcast)((_bits >> 21) & 0x7)" /> 49 <Intrinsic Name="immType" Expression="(asmjit::ImmType)((_bits >> 3) & 0x1)" /> 50 51 <DisplayString Condition="op_type() == asmjit::OperandType::kNone">[None]</DisplayString> 52 <DisplayString Condition="op_type() == asmjit::OperandType::kReg">[Reg] {{ type={reg_type()} group={reg_group()} size={opSize(), d} }}</DisplayString> 53 <DisplayString Condition="op_type() == asmjit::OperandType::kMem">[Mem] {{ base={memBaseType()} index={memIndexType()} }}</DisplayString> 54 <DisplayString Condition="op_type() == asmjit::OperandType::kImm">[Imm] {{ type={immType()} }}</DisplayString> 55 <DisplayString Condition="op_type() == asmjit::OperandType::kLabel">[Label]</DisplayString> 56 <DisplayString Condition="op_type() > asmjit::OperandType::kMaxValue">[Unknown]</DisplayString> 57 58 <Expand HideRawView="true"> 59 <Item Name="bits">_bits, X</Item> 60 <Item Name="op.type">op_type()</Item> 61 <Item Name="reg.type" Condition="op_type() == asmjit::OperandType::kReg">reg_type()</Item> 62 <Item Name="reg.group" Condition="op_type() == asmjit::OperandType::kReg">reg_group()</Item> 63 <Item Name="reg.size" Condition="op_type() == asmjit::OperandType::kReg">opSize(), d</Item> 64 <Item Name="mem.base_type" Condition="op_type() == asmjit::OperandType::kMem">memBaseType()</Item> 65 <Item Name="mem.index_type" Condition="op_type() == asmjit::OperandType::kMem">memIndexType()</Item> 66 <Item Name="mem.regHome" Condition="op_type() == asmjit::OperandType::kMem">memRegHome()</Item> 67 <Item Name="mem.size" Condition="op_type() == asmjit::OperandType::kMem">opSize(), d</Item> 68 <Item Name="mem.x86.segment" Condition="op_type() == asmjit::OperandType::kMem">memX86Segment()</Item> 69 <Item Name="mem.x86.addr_type" Condition="op_type() == asmjit::OperandType::kMem">memX86AddrType()</Item> 70 <Item Name="mem.x86.shift" Condition="op_type() == asmjit::OperandType::kMem">memX86ShiftValue()</Item> 71 <Item Name="mem.x86.broadcast" Condition="op_type() == asmjit::OperandType::kMem">memX86Broadcast()</Item> 72 <Item Name="imm.type" Condition="op_type() == asmjit::OperandType::kImm">immType()</Item> 73 </Expand> 74 </Type> 75 76 <Type Name="asmjit::Operand_"> 77 <Intrinsic Name="op_type" Expression="(asmjit::OperandType)(_signature._bits & 0x7)" /> 78 <Intrinsic Name="opSize" Expression="(_signature._bits >> 24) & 0xFF" /> 79 <Intrinsic Name="reg_type" Expression="(asmjit::RegType)((_signature._bits >> 3) & 0x1F)" /> 80 <Intrinsic Name="reg_group" Expression="(asmjit::RegGroup)((_signature._bits >> 8) & 0xF)" /> 81 <Intrinsic Name="memBaseType" Expression="(asmjit::RegType)((_signature._bits >> 3) & 0x1F)" /> 82 <Intrinsic Name="memIndexType" Expression="(asmjit::RegType)((_signature._bits >> 8) & 0x1F)" /> 83 <Intrinsic Name="memRegHome" Expression="(bool)((_signature._bits >> 13) & 0x1)" /> 84 <Intrinsic Name="memX86Segment" Expression="(asmjit::x86::SReg::Id)((_signature._bits >> 18) & 0x7)" /> 85 <Intrinsic Name="memX86AddrType" Expression="(asmjit::x86::Mem::AddrType)((_signature._bits >> 14) & 0x3)" /> 86 <Intrinsic Name="memX86ShiftValue" Expression="((_signature._bits >> 16) & 0x3)" /> 87 <Intrinsic Name="memX86Broadcast" Expression="(asmjit::x86::Mem::Broadcast)((_signature._bits >> 21) & 0x7)" /> 88 <Intrinsic Name="memBaseId" Expression="_base_id" /> 89 <Intrinsic Name="memIndexId" Expression="_data[0]" /> 90 <Intrinsic Name="memOffset32b" Expression="(__int64)int(_data[1])" /> 91 <Intrinsic Name="memOffset64b" Expression="(__int64) ((unsigned __int64)_base_id << 32) | ((unsigned __int64)_data[1])" /> 92 <Intrinsic Name="memOffset" Expression="memBaseType() != asmjit::RegType::kNone ? memOffset32b() : memOffset64b()" /> 93 <Intrinsic Name="immType" Expression="(asmjit::ImmType)((_signature._bits >> 3) & 0x1)" /> 94 <Intrinsic Name="immValue" Expression="((__int64)_data[1] << 32) | (__int64)_data[0]" /> 95 96 <DisplayString Condition="op_type() == asmjit::OperandType::kNone">[None]</DisplayString> 97 <DisplayString Condition="op_type() == asmjit::OperandType::kReg">[Reg] {{ id={_base_id, d} group={reg_group(), d} type={reg_type(), d} size={opSize(), d} }}</DisplayString> 98 <DisplayString Condition="op_type() == asmjit::OperandType::kMem">[Mem] {{ base_id={memBaseId(), d} index_id={memIndexId(), d} offset={(__int64)memOffset(), d} }}</DisplayString> 99 <DisplayString Condition="op_type() == asmjit::OperandType::kImm">[Imm] {{ val={immValue(), d} hex={immValue(), X} }}</DisplayString> 100 <DisplayString Condition="op_type() == asmjit::OperandType::kLabel">[Label] {{ id={_base_id} }}</DisplayString> 101 <DisplayString Condition="op_type() > 4">[Unknown]</DisplayString> 102 <Expand HideRawView="true"> 103 <Item Name="_signature">_signature._bits, X</Item> 104 <Item Name="op.type">op_type()</Item> 105 <Item Name="op.size">opSize(), d</Item> 106 <Item Name="reg.type" Condition="op_type() == asmjit::OperandType::kReg">reg_type()</Item> 107 <Item Name="reg.group" Condition="op_type() == asmjit::OperandType::kReg">reg_group()</Item> 108 <Item Name="reg.id" Condition="op_type() == asmjit::OperandType::kReg">_base_id, d</Item> 109 <Item Name="mem.base_type" Condition="op_type() == asmjit::OperandType::kMem">memBaseType()</Item> 110 <Item Name="mem.base_id" Condition="op_type() == asmjit::OperandType::kMem && memBaseType() != asmjit::RegType::kNone">memBaseId()</Item> 111 <Item Name="mem.index_type" Condition="op_type() == asmjit::OperandType::kMem">memIndexType()</Item> 112 <Item Name="mem.index_id" Condition="op_type() == asmjit::OperandType::kMem && memIndexType() != asmjit::RegType::kNone">memIndexId()</Item> 113 <Item Name="mem.regHome" Condition="op_type() == asmjit::OperandType::kMem">memRegHome()</Item> 114 <Item Name="mem.offset" Condition="op_type() == asmjit::OperandType::kMem">memOffset(), d</Item> 115 <Item Name="mem.x86.segment" Condition="op_type() == asmjit::OperandType::kMem">memX86Segment()</Item> 116 <Item Name="mem.x86.addr_type" Condition="op_type() == asmjit::OperandType::kMem">memX86AddrType()</Item> 117 <Item Name="mem.x86.shift" Condition="op_type() == asmjit::OperandType::kMem">memX86ShiftValue()</Item> 118 <Item Name="mem.x86.broadcast" Condition="op_type() == asmjit::OperandType::kMem">memX86Broadcast()</Item> 119 <Item Name="imm.type" Condition="op_type() == asmjit::OperandType::kImm">immType()</Item> 120 <Item Name="imm.value" Condition="op_type() == asmjit::OperandType::kImm">immValue(), X</Item> 121 <Item Name="label.id" Condition="op_type() == asmjit::OperandType::kLabel">_base_id, d</Item> 122 <Item Name="raw.base_id">_base_id</Item> 123 <Item Name="raw.data[0]">_data[0]</Item> 124 <Item Name="raw.data[1]">_data[1]</Item> 125 </Expand> 126 </Type> 127 128 <Type Name="asmjit::FuncValue"> 129 <Intrinsic Name="is_reg" Expression="(_data & asmjit::FuncValue::kFlagIsReg) != 0" /> 130 <Intrinsic Name="isStack" Expression="(_data & asmjit::FuncValue::kFlagIsStack) != 0" /> 131 <Intrinsic Name="isIndirect" Expression="(_data & asmjit::FuncValue::kFlagIsIndirect) != 0" /> 132 <Intrinsic Name="is_done" Expression="(_data & asmjit::FuncValue::kFlagIsDone) != 0" /> 133 134 <Intrinsic Name="type_id" Expression="((_data & asmjit::FuncValue::kTypeIdMask) >> asmjit::FuncValue::kTypeIdShift)" /> 135 <Intrinsic Name="reg_id" Expression="((_data & asmjit::FuncValue::kRegIdMask) >> asmjit::FuncValue::kRegIdShift)" /> 136 <Intrinsic Name="reg_type" Expression="((_data & asmjit::FuncValue::kRegTypeMask) >> asmjit::FuncValue::kRegTypeShift)" /> 137 <Intrinsic Name="stack_offset" Expression="((_data & asmjit::FuncValue::kStackOffsetMask) >> asmjit::FuncValue::kStackOffsetShift)" /> 138 139 <DisplayString Condition="is_reg()">[RegValue {{ reg_type={reg_type()} indirect={isIndirect()} done={is_done()} }}]</DisplayString> 140 <DisplayString Condition="isStack()">[StackValue {{ indirect={isIndirect()} done={is_done()} }}]</DisplayString> 141 <DisplayString Condition="!is_reg() && !isStack()">[Unknown]</DisplayString> 142 143 <Expand HideRawView="true"> 144 <Item Name="data">_data</Item> 145 <Item Name="type_id">(asmjit::TypeId)(type_id())</Item> 146 <Item Name="reg_type" Condition="is_reg()">(asmjit::RegType)reg_type()</Item> 147 <Item Name="reg_id" Condition="is_reg()">reg_id()</Item> 148 <Item Name="stack_offset" Condition="isStack()">stack_offset()</Item> 149 </Expand> 150 </Type> 151 152 <Type Name="asmjit::BaseNode"> 153 <Intrinsic Name="nodeType" Expression="_node_type" /> 154 155 <Intrinsic Name="is_inst" Expression="nodeType() == asmjit::NodeType::kInst"></Intrinsic> 156 <Intrinsic Name="is_section" Expression="nodeType() == asmjit::NodeType::kSection"></Intrinsic> 157 <Intrinsic Name="is_label" Expression="nodeType() == asmjit::NodeType::kLabel"></Intrinsic> 158 <Intrinsic Name="is_align" Expression="nodeType() == asmjit::NodeType::kAlign"></Intrinsic> 159 <Intrinsic Name="is_embed_data" Expression="nodeType() == asmjit::NodeType::kEmbedData"></Intrinsic> 160 <Intrinsic Name="is_embed_label" Expression="nodeType() == asmjit::NodeType::kEmbedLabel"></Intrinsic> 161 <Intrinsic Name="is_embed_label_delta" Expression="nodeType() == asmjit::NodeType::kEmbedLabelDelta"></Intrinsic> 162 <Intrinsic Name="is_const_pool" Expression="nodeType() == asmjit::NodeType::kConstPool"></Intrinsic> 163 <Intrinsic Name="is_comment" Expression="nodeType() == asmjit::NodeType::kComment"></Intrinsic> 164 <Intrinsic Name="is_sentinel" Expression="nodeType() == asmjit::NodeType::kSentinel"></Intrinsic> 165 <Intrinsic Name="isJump" Expression="nodeType() == asmjit::NodeType::kJump"></Intrinsic> 166 <Intrinsic Name="is_func" Expression="nodeType() == asmjit::NodeType::kFunc"></Intrinsic> 167 <Intrinsic Name="is_func_ret" Expression="nodeType() == asmjit::NodeType::kFuncRet"></Intrinsic> 168 <Intrinsic Name="is_invoke" Expression="nodeType() == asmjit::NodeType::kInvoke"></Intrinsic> 169 170 <Intrinsic Name="actsAsInst" Expression="is_inst() || isJump() || is_func() || is_func_ret() || is_invoke()" /> 171 <Intrinsic Name="actsAsLabel" Expression="is_label() || is_func()" /> 172 173 <DisplayString Condition="is_inst()">[InstNode]</DisplayString> 174 <DisplayString Condition="is_section()">[SectionNode]</DisplayString> 175 <DisplayString Condition="is_label()">[LabelNode]</DisplayString> 176 <DisplayString Condition="is_align()">[AlignNode]</DisplayString> 177 <DisplayString Condition="is_embed_data()">[EmbedDataNode]</DisplayString> 178 <DisplayString Condition="is_embed_label()">[EmbedLabelNode]</DisplayString> 179 <DisplayString Condition="is_embed_label_delta()">[EmbedLabelDeltaNode]</DisplayString> 180 <DisplayString Condition="is_const_pool()">[ConstPoolNode]</DisplayString> 181 <DisplayString Condition="is_comment()">[CommentNode]</DisplayString> 182 <DisplayString Condition="is_sentinel()">[SentinelNode]</DisplayString> 183 <DisplayString Condition="isJump()">[JumpNode]</DisplayString> 184 <DisplayString Condition="is_func()">[FuncNode]</DisplayString> 185 <DisplayString Condition="is_func_ret()">[FuncRetNode]</DisplayString> 186 <DisplayString Condition="is_invoke()">[InvokeNode]</DisplayString> 187 <DisplayString Condition="nodeType() == asmjit::NodeType::kNone || nodeType() > 18">[UnknownNode {nodeType(), d}]</DisplayString> 188 189 <Expand HideRawView="true"> 190 <Item Name="prev">_prev</Item> 191 <Item Name="next">_next</Item> 192 193 <Item Name="nodeType">_node_type</Item> 194 <Item Name="nodeFlags">_node_flags</Item> 195 196 <Item Name="position">_position</Item> 197 <Item Name="user_data.u64">_userDataU64</Item> 198 <Item Name="user_data.ptr">_userDataPtr</Item> 199 <Item Name="pass_data">_passData</Item> 200 <Item Name="inline_comment">_inline_comment, s8</Item> 201 202 <Item Name="baseInst" Condition="actsAsInst()">((asmjit::InstNode*)this)->_baseInst</Item> 203 <Item Name="op_count" Condition="actsAsInst()">_inst._op_count</Item> 204 <Item Name="op_capacity" Condition="actsAsInst()">_inst._op_capacity</Item> 205 <Item Name="op_array" Condition="actsAsInst()">((asmjit::InstNode*)this)->_opArray, [_inst._op_count]</Item> 206 207 <Item Name="section_id" Condition="is_section()">((asmjit::SectionNode*)this)->_section_id</Item> 208 <Item Name="nextSection" Condition="is_section()">((asmjit::SectionNode*)this)->_nextSection</Item> 209 210 <Item Name="label_id" Condition="is_label()">((asmjit::LabelNode*)this)->_label_id</Item> 211 212 <Item Name="align_mode" Condition="is_align()">((asmjit::AlignNode*)this)->_align_data._align_mode</Item> 213 <Item Name="alignment" Condition="is_align()">((asmjit::AlignNode*)this)->_alignment</Item> 214 215 <Item Name="type_id" Condition="is_embed_data()">_embed._type_id, d</Item> 216 <Item Name="type_size" Condition="is_embed_data()">_embed._type_size, d</Item> 217 <Item Name="item_count" Condition="is_embed_data()">((asmjit::EmbedDataNode*)this)->_item_count</Item> 218 <Item Name="repeat_count" Condition="is_embed_data()">((asmjit::EmbedDataNode*)this)->_repeat_count</Item> 219 <Item Name="inlineData" Condition="is_embed_data()">((asmjit::EmbedDataNode*)this)->_inlineData</Item> 220 <Item Name="externalData" Condition="is_embed_data()">((asmjit::EmbedDataNode*)this)->_externalData</Item> 221 222 <Item Name="label_id" Condition="is_embed_label()">((asmjit::EmbedLabelNode*)this)->_label_id</Item> 223 224 <Item Name="label_id" Condition="is_embed_label_delta()">((asmjit::EmbedLabelDeltaNode*)this)->_label_id</Item> 225 <Item Name="base_label_id" Condition="is_embed_label_delta()">((asmjit::EmbedLabelDeltaNode*)this)->_base_label_id</Item> 226 <Item Name="data_size" Condition="is_embed_label_delta()">((asmjit::EmbedLabelDeltaNode*)this)->_data_size</Item> 227 228 <Item Name="const_pool" Condition="is_const_pool()">((asmjit::ConstPoolNode*)this)->_const_pool</Item> 229 230 <Item Name="sentinel.sentinel_type" Condition="is_sentinel()">_sentinel._sentinel_type</Item> 231 232 <Item Name="annotation" Condition="isJump()">((asmjit::JumpNode*)this)->_annotation</Item> 233 234 <Item Name="func_detail" Condition="is_func()">((asmjit::FuncNode*)this)->_func_detail</Item> 235 <Item Name="frame" Condition="is_func()">((asmjit::FuncNode*)this)->_frame</Item> 236 <Item Name="exit_node" Condition="is_func()">((asmjit::FuncNode*)this)->_exit_node</Item> 237 <Item Name="end" Condition="is_func()">((asmjit::FuncNode*)this)->_end</Item> 238 <Item Name="args" Condition="is_func()">((asmjit::FuncNode*)this)->_args, [((asmjit::FuncNode*)this)->_func_detail._arg_count]</Item> 239 240 <Item Name="func_detail" Condition="is_invoke()">((asmjit::InvokeNode*)this)->_func_detail</Item> 241 <Item Name="rets" Condition="is_invoke()">((asmjit::InvokeNode*)this)->_rets</Item> 242 <Item Name="args" Condition="is_invoke()">((asmjit::InvokeNode*)this)->_args, [((asmjit::InvokeNode*)this)->_func_detail._arg_count]</Item> 243 </Expand> 244 </Type> 245 </AutoVisualizer>