summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asmjit/src/asmjit.natvis
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asmjit/src/asmjit.natvis')
-rw-r--r--3rdparty/asmjit/src/asmjit.natvis83
1 files changed, 83 insertions, 0 deletions
diff --git a/3rdparty/asmjit/src/asmjit.natvis b/3rdparty/asmjit/src/asmjit.natvis
new file mode 100644
index 00000000000..18a083c6c12
--- /dev/null
+++ b/3rdparty/asmjit/src/asmjit.natvis
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- asmjit visualizer for Visual Studio (natvis) -->
+
+<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+ <Type Name="asmjit::String">
+ <Intrinsic Name="isSmall" Expression="(_type &lt; 0x1F)"/>
+ <DisplayString Condition="isSmall()">{_small.data, s8}</DisplayString>
+ <DisplayString Condition="!isSmall()">{_large.data, s8}</DisplayString>
+ <Expand HideRawView="true">
+ <Synthetic Name="_type">
+ <DisplayString Condition="(_type &lt; 0x1F)">Small</DisplayString>
+ <DisplayString Condition="(_type == 0x1F)">Large</DisplayString>
+ <DisplayString Condition="(_type &gt; 0x1F)">External</DisplayString>
+ </Synthetic>
+ <Item Name="_size" Condition="isSmall()" ExcludeView="simple">(int)_small.type, d</Item>
+ <Item Name="_size" Condition="!isSmall()" ExcludeView="simple">_large.size, d</Item>
+ <Item Name="_capacity" Condition="isSmall()" ExcludeView="simple">asmjit::String::kSSOCapacity, d</Item>
+ <Item Name="_capacity" Condition="!isSmall()" ExcludeView="simple">_large.capacity, d</Item>
+ <Item Name="_data" Condition="isSmall()" ExcludeView="simple">_small.data, s8</Item>
+ <Item Name="_data" Condition="!isSmall()" ExcludeView="simple">_large.data, s8</Item>
+ </Expand>
+ </Type>
+
+ <Type Name="asmjit::ZoneVector&lt;*&gt;">
+ <DisplayString>{{ [size={_size, d} capacity={_capacity, d}] }}</DisplayString>
+ <Expand>
+ <Item Name="_size" ExcludeView="simple">_size, d</Item>
+ <Item Name="_capacity" ExcludeView="simple">_capacity, d</Item>
+ <ArrayItems>
+ <Size>_size</Size>
+ <ValuePointer>(($T1*)_data)</ValuePointer>
+ </ArrayItems>
+ </Expand>
+ </Type>
+
+ <Type Name="asmjit::Operand_">
+ <Intrinsic Name="opType" Expression="(unsigned int)(_signature &amp; 0x7)"/>
+ <Intrinsic Name="opSize" Expression="(_signature &gt;&gt; 24) &amp; 0xFF"/>
+
+ <Intrinsic Name="regType" Expression="(_signature &gt;&gt; 3) &amp; 0x1F"/>
+ <Intrinsic Name="regGroup" Expression="(_signature &gt;&gt; 8) &amp; 0xF"/>
+
+ <Intrinsic Name="memBaseType" Expression="(_signature &gt;&gt; 3) &amp; 0x1F"/>
+ <Intrinsic Name="memIndexType" Expression="(_signature &gt;&gt; 8) &amp; 0x1F"/>
+ <Intrinsic Name="memAddrType" Expression="(_signature &gt;&gt; 13) &amp; 0x3"/>
+ <Intrinsic Name="memRegHome" Expression="(_signature &gt;&gt; 15) &amp; 0x1"/>
+
+ <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 &lt;&lt; 32) | ((unsigned __int64)_data[1])"/>
+ <Intrinsic Name="memOffset" Expression="memBaseType() != 0 ? memOffset32b() : memOffset64b()"/>
+
+ <Intrinsic Name="immValue" Expression="((__int64)_data[1] &lt;&lt; 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>
+ <DisplayString Condition="opType() == 2">[Mem] {{ baseId={memBaseId(), d} indexId={memIndexId(), d} offset={(__int64)memOffset(), d} }}</DisplayString>
+ <DisplayString Condition="opType() == 3">[Imm] {{ val={immValue(), d} hex={immValue(), X} }}</DisplayString>
+ <DisplayString Condition="opType() == 4">[Label] {{ id={_baseId} }}</DisplayString>
+ <DisplayString Condition="opType() &gt; 4">[Unknown]</DisplayString>
+ <Expand HideRawView="true">
+ <Item Name="_signature">_signature, X</Item>
+ <Item Name="_signature.any.type">(asmjit::Operand_::OpType)opType()</Item>
+ <Item Name="_signature.any.size">opSize(), d</Item>
+ <Item Name="_signature.reg.type" Condition="opType() == 1">(asmjit::BaseReg::RegType)regType()</Item>
+ <Item Name="_signature.reg.group" Condition="opType() == 1">(asmjit::BaseReg::RegGroup)regGroup()</Item>
+ <Item Name="_signature.mem.baseType" Condition="opType() == 2">(asmjit::BaseReg::RegType)memBaseType()</Item>
+ <Item Name="_signature.mem.indexType" Condition="opType() == 2">(asmjit::BaseReg::RegType)memIndexType()</Item>
+ <Item Name="_signature.mem.addrType" Condition="opType() == 2">(asmjit::BaseMem::AddrType)memAddrType()</Item>
+ <Item Name="_signature.mem.regHome" Condition="opType() == 2">(bool)memRegHome()</Item>
+ <Item Name="_baseId">_baseId</Item>
+ <Item Name="_data[0]" Condition="opType() != 2 &amp;&amp; opType() != 3">_data[0]</Item>
+ <Item Name="_data[1]" Condition="opType() != 2 &amp;&amp; opType() != 3">_data[1]</Item>
+ <Item Name="_data[IndexId]" Condition="opType() == 2">_data[0]</Item>
+ <Item Name="_data[OffsetLo]" Condition="opType() == 2">_data[1]</Item>
+ <Item Name="_data[ImmHi]" Condition="opType() == 3">_data[0]</Item>
+ <Item Name="_data[ImmLo]" Condition="opType() == 3">_data[1]</Item>
+ </Expand>
+ </Type>
+</AutoVisualizer>