diff options
Diffstat (limited to '3rdparty/asmjit/src/asmjit.natvis')
-rw-r--r-- | 3rdparty/asmjit/src/asmjit.natvis | 83 |
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 < 0x1F)"/> + <DisplayString Condition="isSmall()">{_small.data, s8}</DisplayString> + <DisplayString Condition="!isSmall()">{_large.data, s8}</DisplayString> + <Expand HideRawView="true"> + <Synthetic Name="_type"> + <DisplayString Condition="(_type < 0x1F)">Small</DisplayString> + <DisplayString Condition="(_type == 0x1F)">Large</DisplayString> + <DisplayString Condition="(_type > 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<*>"> + <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 & 0x7)"/> + <Intrinsic Name="opSize" Expression="(_signature >> 24) & 0xFF"/> + + <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="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="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> + <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() > 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 && opType() != 3">_data[0]</Item> + <Item Name="_data[1]" Condition="opType() != 2 && 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> |