Example #1
0
 public DeclareDataHandler(Code code)
     : base(0, 0, OpCodeHandlerFlags.DeclareData, Encodable.Any, OperandSize.None, AddressSize.None, null, Array2.Empty <Op>())
 {
     elemLength = code switch {
         Code.DeclareByte => 1,
         Code.DeclareWord => 2,
         Code.DeclareDword => 4,
         Code.DeclareQword => 8,
         _ => throw new InvalidOperationException(),
     };
 }
Example #2
0
 /// <summary>
 /// Computes the hash
 /// </summary>
 public byte[] ComputeHash()
 {
     hasher.TransformFinalBlock(Array2.Empty <byte>(), 0, 0);
     return(hasher.Hash);
 }
Example #3
0
 public InvalidHandler() : base(0, 0, OpCodeHandlerFlags.None, Encodable.Any, OperandSize.None, AddressSize.None, null, Array2.Empty <Op>())
 {
 }
        static Type GetTypeUsingTypeBuilder(IntPtr address)
        {
            if (moduleBuilder is null)
            {
                return(null);
            }

            var tb = moduleBuilder.DefineType(GetNextTypeName());
            var mb = tb.DefineMethod(METHOD_NAME, SR.MethodAttributes.Static, typeof(void), Array2.Empty <Type>());

            try {
                if (setMethodBodyMethodInfo is not null)
                {
                    return(GetTypeNET45(tb, mb, address));
                }
                else
                {
                    return(GetTypeNET40(tb, mb, address));
                }
            }
            catch {
                moduleBuilder = null;
                return(null);
            }
        }
        SymbolScopeImpl ReadScope(uint methodRid, GenericParamContext gpContext)
        {
            var             scopesRidList   = pdbMetadata.GetLocalScopeRidList(methodRid);
            SymbolScopeImpl rootScopeOrNull = null;

            if (scopesRidList.Count != 0)
            {
                var custInfos = ListCache <PdbCustomDebugInfo> .AllocList();

                var stack = ListCache <SymbolScopeImpl> .AllocList();

                var importScopeBlobReader = new ImportScopeBlobReader(module, pdbMetadata.BlobStream);
                for (int i = 0; i < scopesRidList.Count; i++)
                {
                    var  rid   = scopesRidList[i];
                    int  token = new MDToken(Table.LocalScope, rid).ToInt32();
                    bool b     = pdbMetadata.TablesStream.TryReadLocalScopeRow(rid, out var row);
                    Debug.Assert(b);
                    uint startOffset = row.StartOffset;
                    uint endOffset   = startOffset + row.Length;

                    SymbolScopeImpl parent = null;
                    while (stack.Count > 0)
                    {
                        var nextParent = stack[stack.Count - 1];
                        if (startOffset >= nextParent.StartOffset && endOffset <= nextParent.EndOffset)
                        {
                            parent = nextParent;
                            break;
                        }
                        stack.RemoveAt(stack.Count - 1);
                    }

                    Debug.Assert(parent != null || rootScopeOrNull == null);
                    custInfos.Clear();
                    GetCustomDebugInfos(token, gpContext, custInfos);
                    var customDebugInfos = custInfos.Count == 0 ? Array2.Empty <PdbCustomDebugInfo>() : custInfos.ToArray();
                    var scope            = new SymbolScopeImpl(this, parent, (int)startOffset, (int)endOffset, customDebugInfos);
                    if (rootScopeOrNull == null)
                    {
                        rootScopeOrNull = scope;
                    }
                    stack.Add(scope);
                    if (parent != null)
                    {
                        parent.childrenList.Add(scope);
                    }

                    scope.importScope = ReadPdbImportScope(ref importScopeBlobReader, row.ImportScope, gpContext);
                    GetEndOfLists(rid, out uint variableListEnd, out uint constantListEnd);
                    ReadVariables(scope, gpContext, row.VariableList, variableListEnd);
                    ReadConstants(scope, row.ConstantList, constantListEnd);
                }

                ListCache <SymbolScopeImpl> .Free(ref stack);

                ListCache <PdbCustomDebugInfo> .Free(ref custInfos);
            }
            return(rootScopeOrNull ?? new SymbolScopeImpl(this, null, 0, int.MaxValue, Array2.Empty <PdbCustomDebugInfo>()));
        }
Example #6
0
        static Info[] GetMemorySizes()
        {
            var ptr             = new FormatterString("ptr");
            var byte_ptr        = new[] { new FormatterString("byte"), ptr };
            var word_ptr        = new[] { new FormatterString("word"), ptr };
            var dword_ptr       = new[] { new FormatterString("dword"), ptr };
            var qword_ptr       = new[] { new FormatterString("qword"), ptr };
            var xmmword_ptr     = new[] { new FormatterString("xmmword"), ptr };
            var ymmword_ptr     = new[] { new FormatterString("ymmword"), ptr };
            var zmmword_ptr     = new[] { new FormatterString("zmmword"), ptr };
            var fword_ptr       = new[] { new FormatterString("fword"), ptr };
            var tbyte_ptr       = new[] { new FormatterString("tbyte"), ptr };
            var fpuenv14_ptr    = new[] { new FormatterString("fpuenv14"), ptr };
            var fpuenv28_ptr    = new[] { new FormatterString("fpuenv28"), ptr };
            var fpustate108_ptr = new[] { new FormatterString("fpustate108"), ptr };
            var fpustate94_ptr  = new[] { new FormatterString("fpustate94"), ptr };

            var       infos = new Info[IcedConstants.NumberOfMemorySizes];
            const int BroadcastToKindShift = 5;
            const int MemoryKeywordsMask   = 0x1F;

#if HAS_SPAN
            ReadOnlySpan <byte>
#else
            byte[]
#endif
            data = new byte[IcedConstants.NumberOfMemorySizes] {
                // GENERATOR-BEGIN: MemorySizes
                // ⚠️This was generated by GENERATOR!🦹‍♂️
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.byte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.byte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.tbyte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.tbyte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fpuenv14_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fpuenv28_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fpustate94_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fpustate108_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.tbyte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                // GENERATOR-END: MemorySizes
            };

            var b1to2  = new FormatterString("1to2");
            var b1to4  = new FormatterString("1to4");
            var b1to8  = new FormatterString("1to8");
            var b1to16 = new FormatterString("1to16");
            for (int i = 0; i < infos.Length; i++)
            {
                var d        = data[i];
                var keywords = ((MemoryKeywords)(d & MemoryKeywordsMask)) switch {
                    MemoryKeywords.None => Array2.Empty <FormatterString>(),
                    MemoryKeywords.byte_ptr => byte_ptr,
                    MemoryKeywords.dword_ptr => dword_ptr,
                    MemoryKeywords.fpuenv14_ptr => fpuenv14_ptr,
                    MemoryKeywords.fpuenv28_ptr => fpuenv28_ptr,
                    MemoryKeywords.fpustate108_ptr => fpustate108_ptr,
                    MemoryKeywords.fpustate94_ptr => fpustate94_ptr,
                    MemoryKeywords.fword_ptr => fword_ptr,
                    MemoryKeywords.qword_ptr => qword_ptr,
                    MemoryKeywords.tbyte_ptr => tbyte_ptr,
                    MemoryKeywords.word_ptr => word_ptr,
                    MemoryKeywords.xmmword_ptr => xmmword_ptr,
                    MemoryKeywords.ymmword_ptr => ymmword_ptr,
                    MemoryKeywords.zmmword_ptr => zmmword_ptr,
                    _ => throw new InvalidOperationException(),
                };
                var bcstTo = ((BroadcastToKind)(d >> BroadcastToKindShift)) switch {
                    BroadcastToKind.None => default,
Example #7
0
        static Info[] GetMemorySizes()
        {
            // GENERATOR-BEGIN: ConstData
            // ⚠️This was generated by GENERATOR!🦹‍♂️
            const int SizeKindShift      = 5;
            const int MemoryKeywordsMask = 31;
            var       @byte           = new FormatterString("byte");
            var       ptr             = new FormatterString("ptr");
            var       byte_ptr        = new[] { @byte, ptr };
            var       dword           = new FormatterString("dword");
            var       bcst            = new FormatterString("bcst");
            var       dword_bcst      = new[] { dword, bcst };
            var       dword_ptr       = new[] { dword, ptr };
            var       fpuenv14        = new FormatterString("fpuenv14");
            var       fpuenv14_ptr    = new[] { fpuenv14, ptr };
            var       fpuenv28        = new FormatterString("fpuenv28");
            var       fpuenv28_ptr    = new[] { fpuenv28, ptr };
            var       fpustate108     = new FormatterString("fpustate108");
            var       fpustate108_ptr = new[] { fpustate108, ptr };
            var       fpustate94      = new FormatterString("fpustate94");
            var       fpustate94_ptr  = new[] { fpustate94, ptr };
            var       fword           = new FormatterString("fword");
            var       fword_ptr       = new[] { fword, ptr };
            var       oword           = new FormatterString("oword");
            var       oword_ptr       = new[] { oword, ptr };
            var       qword           = new FormatterString("qword");
            var       qword_bcst      = new[] { qword, bcst };
            var       qword_ptr       = new[] { qword, ptr };
            var       tbyte           = new FormatterString("tbyte");
            var       tbyte_ptr       = new[] { tbyte, ptr };
            var       word            = new FormatterString("word");
            var       word_ptr        = new[] { word, ptr };
            var       xmmword         = new FormatterString("xmmword");
            var       xmmword_ptr     = new[] { xmmword, ptr };
            var       ymmword         = new FormatterString("ymmword");
            var       ymmword_ptr     = new[] { ymmword, ptr };
            var       zmmword         = new FormatterString("zmmword");
            var       zmmword_ptr     = new[] { zmmword, ptr };
            var       mem384          = new FormatterString("mem384");
            var       mem384_ptr      = new[] { mem384, ptr };
            var       word_bcst       = new[] { word, bcst };
            var       mmword          = new FormatterString("mmword");
            var       mmword_ptr      = new[] { mmword, ptr };
            var       sizes           = new ushort[] {
                0,
                1,
                2,
                4,
                6,
                8,
                10,
                14,
                16,
                28,
                32,
                48,
                64,
                94,
                108,
                512,
            };

            // GENERATOR-END: ConstData
            MemorySizes.mmword_ptr  = mmword_ptr;
            MemorySizes.dword_ptr   = dword_ptr;
            MemorySizes.oword_ptr   = oword_ptr;
            MemorySizes.qword_ptr   = qword_ptr;
            MemorySizes.xmmword_ptr = xmmword_ptr;

            var infos = new Info[IcedConstants.MemorySizeEnumCount];
            var data  = new ushort[IcedConstants.MemorySizeEnumCount] {
                // GENERATOR-BEGIN: MemorySizes
                // ⚠️This was generated by GENERATOR!🦹‍♂️
                0x0000,
                0x0021,
                0x004D,
                0x0063,
                0x00AB,
                0x00AB,
                0x010E,
                0x014F,
                0x0190,
                0x0021,
                0x004D,
                0x0063,
                0x00AB,
                0x010E,
                0x014F,
                0x0190,
                0x0063,
                0x0088,
                0x00CC,
                0x004D,
                0x0063,
                0x00AB,
                0x0063,
                0x00AB,
                0x00AB,
                0x0109,
                0x0088,
                0x00C8,
                0x004D,
                0x0063,
                0x00AB,
                0x00CC,
                0x010E,
                0x004D,
                0x00E4,
                0x0125,
                0x01A7,
                0x01C6,
                0x01E0,
                0x01E0,
                0x0000,
                0x0000,
                0x00CC,
                0x0190,
                0x0000,
                0x00CC,
                0x0171,
                0x0190,
                0x004D,
                0x004D,
                0x0063,
                0x0063,
                0x0063,
                0x0063,
                0x0063,
                0x0063,
                0x00AB,
                0x00AB,
                0x00AB,
                0x00AB,
                0x00AB,
                0x00AB,
                0x00AB,
                0x00AB,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x010E,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x014F,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0190,
                0x0052,
                0x0062,
                0x0062,
                0x0052,
                0x0062,
                0x0052,
                0x0052,
                0x0062,
                0x0062,
                0x00AA,
                0x00AA,
                0x00AA,
                0x0052,
                0x0062,
                0x00AA,
                0x0062,
                0x00AA,
                0x00AA,
                0x0062,
                0x0062,
                0x0052,
                0x0052,
                0x0062,
                0x0062,
                0x00AA,
                0x00AA,
                0x00AA,
                0x0052,
                0x0062,
                0x00AA,
                0x0062,
                0x00AA,
                0x00AA,
                0x0062,
                0x0062,
                0x0052,
                0x0052,
                0x0062,
                0x0062,
                0x00AA,
                0x00AA,
                0x00AA,
                0x0052,
                0x0062,
                0x00AA,
                0x0062,
                0x0062,
                0x00AA,
                0x00AA,
                0x0062,
                // GENERATOR-END: MemorySizes
            };

            for (int i = 0; i < infos.Length; i++)
            {
                var d        = data[i];
                var keywords = (d & MemoryKeywordsMask) switch {
                    // GENERATOR-BEGIN: MemoryKeywordsSwitch
                    // ⚠️This was generated by GENERATOR!🦹‍♂️
                    0x00 => Array2.Empty <FormatterString>(),
                    0x01 => byte_ptr,
                    0x02 => dword_bcst,
                    0x03 => dword_ptr,
                    0x04 => fpuenv14_ptr,
                    0x05 => fpuenv28_ptr,
                    0x06 => fpustate108_ptr,
                    0x07 => fpustate94_ptr,
                    0x08 => fword_ptr,
                    0x09 => oword_ptr,
                    0x0A => qword_bcst,
                    0x0B => qword_ptr,
                    0x0C => tbyte_ptr,
                    0x0D => word_ptr,
                    0x0E => xmmword_ptr,
                    0x0F => ymmword_ptr,
                    0x10 => zmmword_ptr,
                    0x11 => mem384_ptr,
                    0x12 => word_bcst,
                    // GENERATOR-END: MemoryKeywordsSwitch
                    _ => throw new InvalidOperationException(),
                };
                infos[i] = new Info(i >= (int)IcedConstants.FirstBroadcastMemorySize, sizes[d >> SizeKindShift], keywords);
            }

            return(infos);
        }
Example #8
0
        static Info[] GetMemorySizes()
        {
            var ptr             = "ptr";
            var byte_ptr        = new string[] { "byte", ptr };
            var word_ptr        = new string[] { "word", ptr };
            var dword_ptr       = new string[] { "dword", ptr };
            var qword_ptr       = new string[] { "qword", ptr };
            var xmmword_ptr     = new string[] { "xmmword", ptr };
            var ymmword_ptr     = new string[] { "ymmword", ptr };
            var zmmword_ptr     = new string[] { "zmmword", ptr };
            var fword_ptr       = new string[] { "fword", ptr };
            var tbyte_ptr       = new string[] { "tbyte", ptr };
            var fpuenv14_ptr    = new string[] { "fpuenv14", ptr };
            var fpuenv28_ptr    = new string[] { "fpuenv28", ptr };
            var fpustate108_ptr = new string[] { "fpustate108", ptr };
            var fpustate94_ptr  = new string[] { "fpustate94", ptr };

            var       infos = new Info[DecoderConstants.NumberOfMemorySizes];
            const int BroadcastToKindShift = 5;
            const int MemoryKeywordsMask   = 0x1F;
            var       data = new byte[DecoderConstants.NumberOfMemorySizes] {
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.byte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.byte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.tbyte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.tbyte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fpuenv14_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fpuenv28_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fpustate94_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.fpustate108_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.None | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.tbyte_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.word_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.xmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.ymmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.zmmword_ptr | ((uint)BroadcastToKind.None << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to2 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.qword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to4 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to8 << BroadcastToKindShift)),
                (byte)((uint)MemoryKeywords.dword_ptr | ((uint)BroadcastToKind.b1to16 << BroadcastToKindShift)),
            };

            for (int i = 0; i < infos.Length; i++)
            {
                var d = data[i];

                string[] keywords;
                switch ((MemoryKeywords)(d & MemoryKeywordsMask))
                {
                case MemoryKeywords.None:                               keywords = Array2.Empty <string>(); break;

                case MemoryKeywords.byte_ptr:                   keywords = byte_ptr; break;

                case MemoryKeywords.dword_ptr:                  keywords = dword_ptr; break;

                case MemoryKeywords.fpuenv14_ptr:               keywords = fpuenv14_ptr; break;

                case MemoryKeywords.fpuenv28_ptr:               keywords = fpuenv28_ptr; break;

                case MemoryKeywords.fpustate108_ptr:    keywords = fpustate108_ptr; break;

                case MemoryKeywords.fpustate94_ptr:             keywords = fpustate94_ptr; break;

                case MemoryKeywords.fword_ptr:                  keywords = fword_ptr; break;

                case MemoryKeywords.qword_ptr:                  keywords = qword_ptr; break;

                case MemoryKeywords.tbyte_ptr:                  keywords = tbyte_ptr; break;

                case MemoryKeywords.word_ptr:                   keywords = word_ptr; break;

                case MemoryKeywords.xmmword_ptr:                keywords = xmmword_ptr; break;

                case MemoryKeywords.ymmword_ptr:                keywords = ymmword_ptr; break;

                case MemoryKeywords.zmmword_ptr:                keywords = zmmword_ptr; break;

                default:                                                                throw new InvalidOperationException();
                }

                string?bcstTo;
                switch ((BroadcastToKind)(d >> BroadcastToKindShift))
                {
                case BroadcastToKind.None:              bcstTo = null; break;

                case BroadcastToKind.b1to2:             bcstTo = "1to2"; break;

                case BroadcastToKind.b1to4:             bcstTo = "1to4"; break;

                case BroadcastToKind.b1to8:             bcstTo = "1to8"; break;

                case BroadcastToKind.b1to16:    bcstTo = "1to16"; break;

                default:                                                throw new InvalidOperationException();
                }

                infos[i] = new Info((MemorySize)i, keywords, bcstTo);
            }

            return(infos);
        }
Example #9
0
 public Array2Queue(int capacity)
 {
     arr = new Array2 <E>(capacity);
 }
Example #10
0
 public Array2Queue()
 {
     // 默认容量
     arr = new Array2 <E>();
 }
Example #11
0
        static Info[] GetMemorySizes()
        {
            var ptr       = "ptr";
            var dword_ptr = new string[] { "dword", ptr };

            MemorySizes.dword_ptr = dword_ptr;
            var qword_ptr = new string[] { "qword", ptr };

            MemorySizes.qword_ptr = qword_ptr;
            var mmword_ptr = new string[] { "mmword", ptr };

            MemorySizes.mmword_ptr = mmword_ptr;
            var xmmword_ptr = new string[] { "xmmword", ptr };

            MemorySizes.xmmword_ptr = xmmword_ptr;
            var oword_ptr = new string[] { "oword", ptr };

            MemorySizes.oword_ptr = oword_ptr;

            var byte_ptr        = new string[] { "byte", ptr };
            var word_ptr        = new string[] { "word", ptr };
            var ymmword_ptr     = new string[] { "ymmword", ptr };
            var zmmword_ptr     = new string[] { "zmmword", ptr };
            var fword_ptr       = new string[] { "fword", ptr };
            var tbyte_ptr       = new string[] { "tbyte", ptr };
            var fpuenv14_ptr    = new string[] { "fpuenv14", ptr };
            var fpuenv28_ptr    = new string[] { "fpuenv28", ptr };
            var fpustate108_ptr = new string[] { "fpustate108", ptr };
            var fpustate94_ptr  = new string[] { "fpustate94", ptr };
            var dword_bcst      = new string[] { "dword", "bcst" };
            var qword_bcst      = new string[] { "qword", "bcst" };

            var       infos              = new Info[DecoderConstants.NumberOfMemorySizes];
            const int SizeKindShift      = 5;
            const int MemoryKeywordsMask = 0x1F;
            var       data = new ushort[DecoderConstants.NumberOfMemorySizes] {
                (ushort)((uint)MemoryKeywords.None | ((uint)Size.S0 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.byte_ptr | ((uint)Size.S1 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.word_ptr | ((uint)Size.S2 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.byte_ptr | ((uint)Size.S1 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.word_ptr | ((uint)Size.S2 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.fword_ptr | ((uint)Size.S6 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.tbyte_ptr | ((uint)Size.S10 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.word_ptr | ((uint)Size.S2 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.oword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.fword_ptr | ((uint)Size.S5 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.fword_ptr | ((uint)Size.S6 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.fword_ptr | ((uint)Size.S10 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.word_ptr | ((uint)Size.S2 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.tbyte_ptr | ((uint)Size.S10 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.word_ptr | ((uint)Size.S2 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.fpuenv14_ptr | ((uint)Size.S14 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.fpuenv28_ptr | ((uint)Size.S28 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.fpustate94_ptr | ((uint)Size.S94 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.fpustate108_ptr | ((uint)Size.S108 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.None | ((uint)Size.S512 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.None | ((uint)Size.S512 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.None | ((uint)Size.S0 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.None | ((uint)Size.S0 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.tbyte_ptr | ((uint)Size.S10 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.word_ptr | ((uint)Size.S2 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.word_ptr | ((uint)Size.S2 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_ptr | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_ptr | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.xmmword_ptr | ((uint)Size.S16 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.ymmword_ptr | ((uint)Size.S32 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.zmmword_ptr | ((uint)Size.S64 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.qword_bcst | ((uint)Size.S8 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
                (ushort)((uint)MemoryKeywords.dword_bcst | ((uint)Size.S4 << SizeKindShift)),
            };
            var sizes = new ushort[] {
                0,
                1,
                2,
                4,
                5,
                6,
                8,
                10,
                14,
                16,
                28,
                32,
                64,
                94,
                108,
                512,
            };

            for (int i = 0; i < infos.Length; i++)
            {
                var d = data[i];

                string[] keywords;
                switch ((MemoryKeywords)(d & MemoryKeywordsMask))
                {
                case MemoryKeywords.None:                               keywords = Array2.Empty <string>(); break;

                case MemoryKeywords.byte_ptr:                   keywords = byte_ptr; break;

                case MemoryKeywords.dword_bcst:                 keywords = dword_bcst; break;

                case MemoryKeywords.dword_ptr:                  keywords = dword_ptr; break;

                case MemoryKeywords.fpuenv14_ptr:               keywords = fpuenv14_ptr; break;

                case MemoryKeywords.fpuenv28_ptr:               keywords = fpuenv28_ptr; break;

                case MemoryKeywords.fpustate108_ptr:    keywords = fpustate108_ptr; break;

                case MemoryKeywords.fpustate94_ptr:             keywords = fpustate94_ptr; break;

                case MemoryKeywords.fword_ptr:                  keywords = fword_ptr; break;

                case MemoryKeywords.oword_ptr:                  keywords = oword_ptr; break;

                case MemoryKeywords.qword_bcst:                 keywords = qword_bcst; break;

                case MemoryKeywords.qword_ptr:                  keywords = qword_ptr; break;

                case MemoryKeywords.tbyte_ptr:                  keywords = tbyte_ptr; break;

                case MemoryKeywords.word_ptr:                   keywords = word_ptr; break;

                case MemoryKeywords.xmmword_ptr:                keywords = xmmword_ptr; break;

                case MemoryKeywords.ymmword_ptr:                keywords = ymmword_ptr; break;

                case MemoryKeywords.zmmword_ptr:                keywords = zmmword_ptr; break;

                default:                                                                throw new InvalidOperationException();
                }

                infos[i] = new Info((MemorySize)i, i >= (int)MemorySize.Broadcast64_UInt32, sizes[d >> SizeKindShift], keywords);
            }

            return(infos);
        }
Example #12
0
            public static bool TryGet_RuntimeInformation_Architecture(out Machine machine)
            {
                machine = 0;
                var processArchitectureMethod = System_Runtime_InteropServices_RuntimeInformation?.GetMethod("get_ProcessArchitecture", Array2.Empty <Type>());

                if (processArchitectureMethod is null)
                {
                    return(false);
                }

                var result = processArchitectureMethod.Invoke(null, Array2.Empty <object>());

                return(TryGetArchitecture((int)result, out machine));
            }