From 78d9068cb5d229001dfb03c181e11930e6a18981 Mon Sep 17 00:00:00 2001 From: valentinbreiz Date: Sun, 19 Jun 2022 19:46:24 +0200 Subject: [PATCH] Update ACPILib with last @MishaTY changes --- source/Cosmos.Core/ACPI/ACPI.cs | 6 +- source/Cosmos.Core/ACPI/AML/Definitions.cs | 2 +- source/Cosmos.Core/ACPI/AML/OpCode.cs | 2 +- source/Cosmos.Core/ACPI/AML/OpCodeTable.cs | 236 ++--- source/Cosmos.Core/ACPI/Interupter/EisaId.cs | 26 + .../ACPI/Interupter/StackObject.cs | 69 ++ source/Cosmos.Core/ACPI/Parser/Parser.cs | 2 +- source/Cosmos.Core/ACPI/Parser2/ParseNode.cs | 7 +- source/Cosmos.Core/ACPI/Parser2/Parser2.cs | 929 ++++++++++-------- 9 files changed, 755 insertions(+), 524 deletions(-) create mode 100644 source/Cosmos.Core/ACPI/Interupter/EisaId.cs create mode 100644 source/Cosmos.Core/ACPI/Interupter/StackObject.cs diff --git a/source/Cosmos.Core/ACPI/ACPI.cs b/source/Cosmos.Core/ACPI/ACPI.cs index 215f180086..ffe7acee63 100644 --- a/source/Cosmos.Core/ACPI/ACPI.cs +++ b/source/Cosmos.Core/ACPI/ACPI.cs @@ -814,8 +814,11 @@ private static void SearchPackage(ParseNode op) if (op.Arguments[x].ToString() == "Package") { - var arg = (ParseNode)op.Arguments[x]; + Global.mDebugger.Send("Package found!"); + //var arg = (ParseNode)op.Arguments[x]; + + /* for (int y = 0; y < arg.Nodes.Count; y++) { List package = arg.Nodes[y].Nodes; @@ -830,6 +833,7 @@ private static void SearchPackage(ParseNode op) IrqRoutingTable.Add(irqRouting); } + */ } } } diff --git a/source/Cosmos.Core/ACPI/AML/Definitions.cs b/source/Cosmos.Core/ACPI/AML/Definitions.cs index 4f22eb393f..b6008abbf9 100644 --- a/source/Cosmos.Core/ACPI/AML/Definitions.cs +++ b/source/Cosmos.Core/ACPI/AML/Definitions.cs @@ -1,4 +1,4 @@ -namespace ACPILib.AML +namespace ACPILibs.AML { public class Definitions { diff --git a/source/Cosmos.Core/ACPI/AML/OpCode.cs b/source/Cosmos.Core/ACPI/AML/OpCode.cs index 2657d5c548..04efa408f9 100644 --- a/source/Cosmos.Core/ACPI/AML/OpCode.cs +++ b/source/Cosmos.Core/ACPI/AML/OpCode.cs @@ -635,7 +635,7 @@ private string GetName(OpCodeEnum code) return name; } - public override string ToString() + public override string ToString() { return Name; } diff --git a/source/Cosmos.Core/ACPI/AML/OpCodeTable.cs b/source/Cosmos.Core/ACPI/AML/OpCodeTable.cs index 655c8e7681..556b5da818 100644 --- a/source/Cosmos.Core/ACPI/AML/OpCodeTable.cs +++ b/source/Cosmos.Core/ACPI/AML/OpCodeTable.cs @@ -71,155 +71,155 @@ public class OpCodeTable public static OpCode[] OpCodes = new OpCode[] { /* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */ -/* 00 */ new OpCode(OpCodeEnum.Zero, ParseArgs.ARGP_ZERO_OP, InterpreterArgs.ARGI_ZERO_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Constant, OpCodeFlags.Constant), -/* 01 */ new OpCode(OpCodeEnum.One, ParseArgs.ARGP_ONE_OP, InterpreterArgs.ARGI_ONE_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Constant, OpCodeFlags.Constant), -/* 02 */ new OpCode(OpCodeEnum.Alias, ParseArgs.ARGP_ALIAS_OP, InterpreterArgs.ARGI_ALIAS_OP, ObjectTypeEnum.LocalAlias, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 03 */ new OpCode(OpCodeEnum.Name, ParseArgs.ARGP_NAME_OP, InterpreterArgs.ARGI_NAME_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedComplex, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 04 */ new OpCode(OpCodeEnum.Byte, ParseArgs.ARGP_BYTE_OP, InterpreterArgs.ARGI_BYTE_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), -/* 05 */ new OpCode(OpCodeEnum.Word, ParseArgs.ARGP_WORD_OP, InterpreterArgs.ARGI_WORD_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), -/* 06 */ new OpCode(OpCodeEnum.DWord, ParseArgs.ARGP_DWORD_OP, InterpreterArgs.ARGI_DWORD_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), -/* 07 */ new OpCode(OpCodeEnum.String, ParseArgs.ARGP_STRING_OP, InterpreterArgs.ARGI_STRING_OP, ObjectTypeEnum.String, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), -/* 08 */ new OpCode(OpCodeEnum.Scope, ParseArgs.ARGP_SCOPE_OP, InterpreterArgs.ARGI_SCOPE_OP, ObjectTypeEnum.LocalScope, OpCodeClass.NamedObject, OpCodeType.NamedNoObject, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 09 */ new OpCode(OpCodeEnum.Buffer, ParseArgs.ARGP_BUFFER_OP, InterpreterArgs.ARGI_BUFFER_OP, ObjectTypeEnum.Buffer, OpCodeClass.Create, OpCodeType.CreateObject, OpCodeFlags.HasArguments | OpCodeFlags.Defer | OpCodeFlags.Constant), -/* 0A */ new OpCode(OpCodeEnum.Package, ParseArgs.ARGP_PACKAGE_OP, InterpreterArgs.ARGI_PACKAGE_OP, ObjectTypeEnum.Package, OpCodeClass.Create, OpCodeType.CreateObject, OpCodeFlags.HasArguments | OpCodeFlags.Defer | OpCodeFlags.Constant), -/* 0B */ new OpCode(OpCodeEnum.Method, ParseArgs.ARGP_METHOD_OP, InterpreterArgs.ARGI_METHOD_OP, ObjectTypeEnum.Method, OpCodeClass.NamedObject, OpCodeType.NamedComplex, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named | OpCodeFlags.Defer), -/* 0C */ new OpCode(OpCodeEnum.Local0, ParseArgs.ARGP_LOCAL0, InterpreterArgs.ARGI_LOCAL0, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), -/* 0D */ new OpCode(OpCodeEnum.Local1, ParseArgs.ARGP_LOCAL1, InterpreterArgs.ARGI_LOCAL1, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), -/* 0E */ new OpCode(OpCodeEnum.Local2, ParseArgs.ARGP_LOCAL2, InterpreterArgs.ARGI_LOCAL2, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), -/* 0F */ new OpCode(OpCodeEnum.Local3, ParseArgs.ARGP_LOCAL3, InterpreterArgs.ARGI_LOCAL3, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), -/* 10 */ new OpCode(OpCodeEnum.Local4, ParseArgs.ARGP_LOCAL4, InterpreterArgs.ARGI_LOCAL4, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), -/* 11 */ new OpCode(OpCodeEnum.Local5, ParseArgs.ARGP_LOCAL5, InterpreterArgs.ARGI_LOCAL5, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), -/* 12 */ new OpCode(OpCodeEnum.Local6, ParseArgs.ARGP_LOCAL6, InterpreterArgs.ARGI_LOCAL6, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), -/* 13 */ new OpCode(OpCodeEnum.Local7, ParseArgs.ARGP_LOCAL7, InterpreterArgs.ARGI_LOCAL7, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), -/* 14 */ new OpCode(OpCodeEnum.Arg0, ParseArgs.ARGP_ARG0, InterpreterArgs.ARGI_ARG0, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), -/* 15 */ new OpCode(OpCodeEnum.Arg1, ParseArgs.ARGP_ARG1, InterpreterArgs.ARGI_ARG1, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), -/* 16 */ new OpCode(OpCodeEnum.Arg2, ParseArgs.ARGP_ARG2, InterpreterArgs.ARGI_ARG2, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), -/* 17 */ new OpCode(OpCodeEnum.Arg3, ParseArgs.ARGP_ARG3, InterpreterArgs.ARGI_ARG3, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), -/* 18 */ new OpCode(OpCodeEnum.Arg4, ParseArgs.ARGP_ARG4, InterpreterArgs.ARGI_ARG4, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), -/* 19 */ new OpCode(OpCodeEnum.Arg5, ParseArgs.ARGP_ARG5, InterpreterArgs.ARGI_ARG5, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), -/* 1A */ new OpCode(OpCodeEnum.Arg6, ParseArgs.ARGP_ARG6, InterpreterArgs.ARGI_ARG6, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), -/* 1B */ new OpCode(OpCodeEnum.Store, ParseArgs.ARGP_STORE_OP, InterpreterArgs.ARGI_STORE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R), +/* 00 */ new OpCode(OpCodeEnum.Zero, ParseArgs.ARGP_ZERO_OP, InterpreterArgs.ARGI_ZERO_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Constant, OpCodeFlags.Constant), +/* 01 */ new OpCode(OpCodeEnum.One, ParseArgs.ARGP_ONE_OP, InterpreterArgs.ARGI_ONE_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Constant, OpCodeFlags.Constant), +/* 02 */ new OpCode(OpCodeEnum.Alias, ParseArgs.ARGP_ALIAS_OP, InterpreterArgs.ARGI_ALIAS_OP, ObjectTypeEnum.LocalAlias, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 03 */ new OpCode(OpCodeEnum.Name, ParseArgs.ARGP_NAME_OP, InterpreterArgs.ARGI_NAME_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedComplex, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 04 */ new OpCode(OpCodeEnum.Byte, ParseArgs.ARGP_BYTE_OP, InterpreterArgs.ARGI_BYTE_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), +/* 05 */ new OpCode(OpCodeEnum.Word, ParseArgs.ARGP_WORD_OP, InterpreterArgs.ARGI_WORD_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), +/* 06 */ new OpCode(OpCodeEnum.DWord, ParseArgs.ARGP_DWORD_OP, InterpreterArgs.ARGI_DWORD_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), +/* 07 */ new OpCode(OpCodeEnum.String, ParseArgs.ARGP_STRING_OP, InterpreterArgs.ARGI_STRING_OP, ObjectTypeEnum.String, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), +/* 08 */ new OpCode(OpCodeEnum.Scope, ParseArgs.ARGP_SCOPE_OP, InterpreterArgs.ARGI_SCOPE_OP, ObjectTypeEnum.LocalScope, OpCodeClass.NamedObject, OpCodeType.NamedNoObject, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 09 */ new OpCode(OpCodeEnum.Buffer, ParseArgs.ARGP_BUFFER_OP, InterpreterArgs.ARGI_BUFFER_OP, ObjectTypeEnum.Buffer, OpCodeClass.Create, OpCodeType.CreateObject, OpCodeFlags.HasArguments | OpCodeFlags.Defer | OpCodeFlags.Constant), +/* 0A */ new OpCode(OpCodeEnum.Package, ParseArgs.ARGP_PACKAGE_OP, InterpreterArgs.ARGI_PACKAGE_OP, ObjectTypeEnum.Package, OpCodeClass.Create, OpCodeType.CreateObject, OpCodeFlags.HasArguments | OpCodeFlags.Defer | OpCodeFlags.Constant), +/* 0B */ new OpCode(OpCodeEnum.Method, ParseArgs.ARGP_METHOD_OP, InterpreterArgs.ARGI_METHOD_OP, ObjectTypeEnum.Method, OpCodeClass.NamedObject, OpCodeType.NamedComplex, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named | OpCodeFlags.Defer), +/* 0C */ new OpCode(OpCodeEnum.Local0, ParseArgs.ARGP_LOCAL0, InterpreterArgs.ARGI_LOCAL0, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), +/* 0D */ new OpCode(OpCodeEnum.Local1, ParseArgs.ARGP_LOCAL1, InterpreterArgs.ARGI_LOCAL1, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), +/* 0E */ new OpCode(OpCodeEnum.Local2, ParseArgs.ARGP_LOCAL2, InterpreterArgs.ARGI_LOCAL2, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), +/* 0F */ new OpCode(OpCodeEnum.Local3, ParseArgs.ARGP_LOCAL3, InterpreterArgs.ARGI_LOCAL3, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), +/* 10 */ new OpCode(OpCodeEnum.Local4, ParseArgs.ARGP_LOCAL4, InterpreterArgs.ARGI_LOCAL4, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), +/* 11 */ new OpCode(OpCodeEnum.Local5, ParseArgs.ARGP_LOCAL5, InterpreterArgs.ARGI_LOCAL5, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), +/* 12 */ new OpCode(OpCodeEnum.Local6, ParseArgs.ARGP_LOCAL6, InterpreterArgs.ARGI_LOCAL6, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), +/* 13 */ new OpCode(OpCodeEnum.Local7, ParseArgs.ARGP_LOCAL7, InterpreterArgs.ARGI_LOCAL7, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.LocalVariable, 0), +/* 14 */ new OpCode(OpCodeEnum.Arg0, ParseArgs.ARGP_ARG0, InterpreterArgs.ARGI_ARG0, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), +/* 15 */ new OpCode(OpCodeEnum.Arg1, ParseArgs.ARGP_ARG1, InterpreterArgs.ARGI_ARG1, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), +/* 16 */ new OpCode(OpCodeEnum.Arg2, ParseArgs.ARGP_ARG2, InterpreterArgs.ARGI_ARG2, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), +/* 17 */ new OpCode(OpCodeEnum.Arg3, ParseArgs.ARGP_ARG3, InterpreterArgs.ARGI_ARG3, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), +/* 18 */ new OpCode(OpCodeEnum.Arg4, ParseArgs.ARGP_ARG4, InterpreterArgs.ARGI_ARG4, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), +/* 19 */ new OpCode(OpCodeEnum.Arg5, ParseArgs.ARGP_ARG5, InterpreterArgs.ARGI_ARG5, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), +/* 1A */ new OpCode(OpCodeEnum.Arg6, ParseArgs.ARGP_ARG6, InterpreterArgs.ARGI_ARG6, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.MethodArgument, 0), +/* 1B */ new OpCode(OpCodeEnum.Store, ParseArgs.ARGP_STORE_OP, InterpreterArgs.ARGI_STORE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R), /* 1C */ new OpCode(OpCodeEnum.ReferenceOf, ParseArgs.ARGP_REF_OF_OP, InterpreterArgs.ARGI_REF_OF_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R), -/* 1D */ new OpCode(OpCodeEnum.Add, ParseArgs.ARGP_ADD_OP, InterpreterArgs.ARGI_ADD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 1E */ new OpCode(OpCodeEnum.Concatenate, ParseArgs.ARGP_CONCAT_OP, InterpreterArgs.ARGI_CONCAT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Constant), -/* 1F */ new OpCode(OpCodeEnum.Subtract, ParseArgs.ARGP_SUBTRACT_OP, InterpreterArgs.ARGI_SUBTRACT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 20 */ new OpCode(OpCodeEnum.Increment, ParseArgs.ARGP_INCREMENT_OP, InterpreterArgs.ARGI_INCREMENT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.Constant), -/* 21 */ new OpCode(OpCodeEnum.Decrement, ParseArgs.ARGP_DECREMENT_OP, InterpreterArgs.ARGI_DECREMENT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.Constant), -/* 22 */ new OpCode(OpCodeEnum.Multiply, ParseArgs.ARGP_MULTIPLY_OP, InterpreterArgs.ARGI_MULTIPLY_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 23 */ new OpCode(OpCodeEnum.Divide, ParseArgs.ARGP_DIVIDE_OP, InterpreterArgs.ARGI_DIVIDE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_2T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_2T_1R | OpCodeFlags.Constant), -/* 24 */ new OpCode(OpCodeEnum.ShiftLeft, ParseArgs.ARGP_SHIFT_LEFT_OP, InterpreterArgs.ARGI_SHIFT_LEFT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 25 */ new OpCode(OpCodeEnum.ShiftRight, ParseArgs.ARGP_SHIFT_RIGHT_OP, InterpreterArgs.ARGI_SHIFT_RIGHT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 26 */ new OpCode(OpCodeEnum.BitAnd, ParseArgs.ARGP_BIT_AND_OP, InterpreterArgs.ARGI_BIT_AND_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 27 */ new OpCode(OpCodeEnum.BitNand, ParseArgs.ARGP_BIT_NAND_OP, InterpreterArgs.ARGI_BIT_NAND_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 28 */ new OpCode(OpCodeEnum.BitOr, ParseArgs.ARGP_BIT_OR_OP, InterpreterArgs.ARGI_BIT_OR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 29 */ new OpCode(OpCodeEnum.BitNor, ParseArgs.ARGP_BIT_NOR_OP, InterpreterArgs.ARGI_BIT_NOR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 2A */ new OpCode(OpCodeEnum.BitXor, ParseArgs.ARGP_BIT_XOR_OP, InterpreterArgs.ARGI_BIT_XOR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), -/* 2B */ new OpCode(OpCodeEnum.BitNor, ParseArgs.ARGP_BIT_NOT_OP, InterpreterArgs.ARGI_BIT_NOT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), -/* 2C */ new OpCode(OpCodeEnum.FindSetLeftBit, ParseArgs.ARGP_FIND_SET_LEFT_BIT_OP, InterpreterArgs.ARGI_FIND_SET_LEFT_BIT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), -/* 2D */ new OpCode(OpCodeEnum.FindSetRightBit, ParseArgs.ARGP_FIND_SET_RIGHT_BIT_OP,InterpreterArgs.ARGI_FIND_SET_RIGHT_BIT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 1D */ new OpCode(OpCodeEnum.Add, ParseArgs.ARGP_ADD_OP, InterpreterArgs.ARGI_ADD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 1E */ new OpCode(OpCodeEnum.Concatenate, ParseArgs.ARGP_CONCAT_OP, InterpreterArgs.ARGI_CONCAT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Constant), +/* 1F */ new OpCode(OpCodeEnum.Subtract, ParseArgs.ARGP_SUBTRACT_OP, InterpreterArgs.ARGI_SUBTRACT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 20 */ new OpCode(OpCodeEnum.Increment, ParseArgs.ARGP_INCREMENT_OP, InterpreterArgs.ARGI_INCREMENT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.Constant), +/* 21 */ new OpCode(OpCodeEnum.Decrement, ParseArgs.ARGP_DECREMENT_OP, InterpreterArgs.ARGI_DECREMENT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.Constant), +/* 22 */ new OpCode(OpCodeEnum.Multiply, ParseArgs.ARGP_MULTIPLY_OP, InterpreterArgs.ARGI_MULTIPLY_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 23 */ new OpCode(OpCodeEnum.Divide, ParseArgs.ARGP_DIVIDE_OP, InterpreterArgs.ARGI_DIVIDE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_2T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_2T_1R | OpCodeFlags.Constant), +/* 24 */ new OpCode(OpCodeEnum.ShiftLeft, ParseArgs.ARGP_SHIFT_LEFT_OP, InterpreterArgs.ARGI_SHIFT_LEFT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 25 */ new OpCode(OpCodeEnum.ShiftRight, ParseArgs.ARGP_SHIFT_RIGHT_OP, InterpreterArgs.ARGI_SHIFT_RIGHT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 26 */ new OpCode(OpCodeEnum.BitAnd, ParseArgs.ARGP_BIT_AND_OP, InterpreterArgs.ARGI_BIT_AND_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 27 */ new OpCode(OpCodeEnum.BitNand, ParseArgs.ARGP_BIT_NAND_OP, InterpreterArgs.ARGI_BIT_NAND_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 28 */ new OpCode(OpCodeEnum.BitOr, ParseArgs.ARGP_BIT_OR_OP, InterpreterArgs.ARGI_BIT_OR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 29 */ new OpCode(OpCodeEnum.BitNor, ParseArgs.ARGP_BIT_NOR_OP, InterpreterArgs.ARGI_BIT_NOR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 2A */ new OpCode(OpCodeEnum.BitXor, ParseArgs.ARGP_BIT_XOR_OP, InterpreterArgs.ARGI_BIT_XOR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Math | OpCodeFlags.Constant), +/* 2B */ new OpCode(OpCodeEnum.BitNor, ParseArgs.ARGP_BIT_NOT_OP, InterpreterArgs.ARGI_BIT_NOT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 2C */ new OpCode(OpCodeEnum.FindSetLeftBit, ParseArgs.ARGP_FIND_SET_LEFT_BIT_OP, InterpreterArgs.ARGI_FIND_SET_LEFT_BIT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 2D */ new OpCode(OpCodeEnum.FindSetRightBit, ParseArgs.ARGP_FIND_SET_RIGHT_BIT_OP,InterpreterArgs.ARGI_FIND_SET_RIGHT_BIT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), /* 2E */ new OpCode(OpCodeEnum.DereferenceOf, ParseArgs.ARGP_DEREF_OF_OP, InterpreterArgs.ARGI_DEREF_OF_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R), -/* 2F */ new OpCode(OpCodeEnum.Notify, ParseArgs.ARGP_NOTIFY_OP, InterpreterArgs.ARGI_NOTIFY_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_0R), -/* 30 */ new OpCode(OpCodeEnum.SizeOf, ParseArgs.ARGP_SIZE_OF_OP, InterpreterArgs.ARGI_SIZE_OF_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.NoOperandResolve), -/* 31 */ new OpCode(OpCodeEnum.Index, ParseArgs.ARGP_INDEX_OP, InterpreterArgs.ARGI_INDEX_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R), -/* 32 */ new OpCode(OpCodeEnum.Match, ParseArgs.ARGP_MATCH_OP, InterpreterArgs.ARGI_MATCH_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_6A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_6A_0T_1R | OpCodeFlags.Constant), -/* 33 */ new OpCode(OpCodeEnum.CreateDWordField, ParseArgs.ARGP_CREATE_DWORD_FIELD_OP,InterpreterArgs.ARGI_CREATE_DWORD_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), -/* 34 */ new OpCode(OpCodeEnum.CreateWordField, ParseArgs.ARGP_CREATE_WORD_FIELD_OP, InterpreterArgs.ARGI_CREATE_WORD_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), -/* 35 */ new OpCode(OpCodeEnum.CreateByteField, ParseArgs.ARGP_CREATE_BYTE_FIELD_OP, InterpreterArgs.ARGI_CREATE_BYTE_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), -/* 36 */ new OpCode(OpCodeEnum.CreateBitField, ParseArgs.ARGP_CREATE_BIT_FIELD_OP, InterpreterArgs.ARGI_CREATE_BIT_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), -/* 37 */ new OpCode(OpCodeEnum.ObjectType, ParseArgs.ARGP_OBJECT_TYPE_OP, InterpreterArgs.ARGI_OBJECT_TYPE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.NoOperandResolve), +/* 2F */ new OpCode(OpCodeEnum.Notify, ParseArgs.ARGP_NOTIFY_OP, InterpreterArgs.ARGI_NOTIFY_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_0R), +/* 30 */ new OpCode(OpCodeEnum.SizeOf, ParseArgs.ARGP_SIZE_OF_OP, InterpreterArgs.ARGI_SIZE_OF_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.NoOperandResolve), +/* 31 */ new OpCode(OpCodeEnum.Index, ParseArgs.ARGP_INDEX_OP, InterpreterArgs.ARGI_INDEX_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R), +/* 32 */ new OpCode(OpCodeEnum.Match, ParseArgs.ARGP_MATCH_OP, InterpreterArgs.ARGI_MATCH_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_6A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_6A_0T_1R | OpCodeFlags.Constant), +/* 33 */ new OpCode(OpCodeEnum.CreateDWordField, ParseArgs.ARGP_CREATE_DWORD_FIELD_OP,InterpreterArgs.ARGI_CREATE_DWORD_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), +/* 34 */ new OpCode(OpCodeEnum.CreateWordField, ParseArgs.ARGP_CREATE_WORD_FIELD_OP, InterpreterArgs.ARGI_CREATE_WORD_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), +/* 35 */ new OpCode(OpCodeEnum.CreateByteField, ParseArgs.ARGP_CREATE_BYTE_FIELD_OP, InterpreterArgs.ARGI_CREATE_BYTE_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), +/* 36 */ new OpCode(OpCodeEnum.CreateBitField, ParseArgs.ARGP_CREATE_BIT_FIELD_OP, InterpreterArgs.ARGI_CREATE_BIT_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), +/* 37 */ new OpCode(OpCodeEnum.ObjectType, ParseArgs.ARGP_OBJECT_TYPE_OP, InterpreterArgs.ARGI_OBJECT_TYPE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.NoOperandResolve), /* 38 */ new OpCode(OpCodeEnum.LogicalAnd, ParseArgs.ARGP_LAND_OP, InterpreterArgs.ARGI_LAND_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R | OpCodeFlags.LogicalNumeric | OpCodeFlags.Constant), /* 39 */ new OpCode(OpCodeEnum.LogicalOr, ParseArgs.ARGP_LOR_OP, InterpreterArgs.ARGI_LOR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R | OpCodeFlags.LogicalNumeric | OpCodeFlags.Constant), /* 3A */ new OpCode(OpCodeEnum.LogicalNot, ParseArgs.ARGP_LNOT_OP, InterpreterArgs.ARGI_LNOT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_1R | OpCodeFlags.Constant), /* 3B */ new OpCode(OpCodeEnum.LogicalEqual, ParseArgs.ARGP_LEQUAL_OP, InterpreterArgs.ARGI_LEQUAL_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R | OpCodeFlags.Logical | OpCodeFlags.Constant), /* 3C */ new OpCode(OpCodeEnum.LogicalGreater, ParseArgs.ARGP_LGREATER_OP, InterpreterArgs.ARGI_LGREATER_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R | OpCodeFlags.Logical | OpCodeFlags.Constant), /* 3D */ new OpCode(OpCodeEnum.LogicalLess, ParseArgs.ARGP_LLESS_OP, InterpreterArgs.ARGI_LLESS_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R | OpCodeFlags.Logical | OpCodeFlags.Constant), -/* 3E */ new OpCode(OpCodeEnum.If, ParseArgs.ARGP_IF_OP, InterpreterArgs.ARGI_IF_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, OpCodeFlags.HasArguments), -/* 3F */ new OpCode(OpCodeEnum.Else, ParseArgs.ARGP_ELSE_OP, InterpreterArgs.ARGI_ELSE_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, OpCodeFlags.HasArguments), -/* 40 */ new OpCode(OpCodeEnum.While, ParseArgs.ARGP_WHILE_OP, InterpreterArgs.ARGI_WHILE_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, OpCodeFlags.HasArguments), -/* 41 */ new OpCode(OpCodeEnum.NoOp, ParseArgs.ARGP_NOOP_OP, InterpreterArgs.ARGI_NOOP_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, 0), -/* 42 */ new OpCode(OpCodeEnum.Return, ParseArgs.ARGP_RETURN_OP, InterpreterArgs.ARGI_RETURN_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, OpCodeFlags.HasArguments), -/* 43 */ new OpCode(OpCodeEnum.Break, ParseArgs.ARGP_BREAK_OP, InterpreterArgs.ARGI_BREAK_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, 0), -/* 44 */ new OpCode(OpCodeEnum.Breakpoint, ParseArgs.ARGP_BREAK_POINT_OP, InterpreterArgs.ARGI_BREAK_POINT_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, 0), -/* 45 */ new OpCode(OpCodeEnum.Ones, ParseArgs.ARGP_ONES_OP, InterpreterArgs.ARGI_ONES_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Constant, OpCodeFlags.Constant), +/* 3E */ new OpCode(OpCodeEnum.If, ParseArgs.ARGP_IF_OP, InterpreterArgs.ARGI_IF_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, OpCodeFlags.HasArguments), +/* 3F */ new OpCode(OpCodeEnum.Else, ParseArgs.ARGP_ELSE_OP, InterpreterArgs.ARGI_ELSE_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, OpCodeFlags.HasArguments), +/* 40 */ new OpCode(OpCodeEnum.While, ParseArgs.ARGP_WHILE_OP, InterpreterArgs.ARGI_WHILE_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, OpCodeFlags.HasArguments), +/* 41 */ new OpCode(OpCodeEnum.NoOp, ParseArgs.ARGP_NOOP_OP, InterpreterArgs.ARGI_NOOP_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, 0), +/* 42 */ new OpCode(OpCodeEnum.Return, ParseArgs.ARGP_RETURN_OP, InterpreterArgs.ARGI_RETURN_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, OpCodeFlags.HasArguments), +/* 43 */ new OpCode(OpCodeEnum.Break, ParseArgs.ARGP_BREAK_OP, InterpreterArgs.ARGI_BREAK_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, 0), +/* 44 */ new OpCode(OpCodeEnum.Breakpoint, ParseArgs.ARGP_BREAK_POINT_OP, InterpreterArgs.ARGI_BREAK_POINT_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, 0), +/* 45 */ new OpCode(OpCodeEnum.Ones, ParseArgs.ARGP_ONES_OP, InterpreterArgs.ARGI_ONES_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Constant, OpCodeFlags.Constant), /* Prefixed opcodes (Two-byte opcodes with a prefix op) */ -/* 46 */ new OpCode(OpCodeEnum.Mutex, ParseArgs.ARGP_MUTEX_OP, InterpreterArgs.ARGI_MUTEX_OP, ObjectTypeEnum.Mutex, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 47 */ new OpCode(OpCodeEnum.Event, ParseArgs.ARGP_EVENT_OP, InterpreterArgs.ARGI_EVENT_OP, ObjectTypeEnum.Event, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named ), +/* 46 */ new OpCode(OpCodeEnum.Mutex, ParseArgs.ARGP_MUTEX_OP, InterpreterArgs.ARGI_MUTEX_OP, ObjectTypeEnum.Mutex, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 47 */ new OpCode(OpCodeEnum.Event, ParseArgs.ARGP_EVENT_OP, InterpreterArgs.ARGI_EVENT_OP, ObjectTypeEnum.Event, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named ), /* 48 */ new OpCode(OpCodeEnum.ConditionalReferenceOf, ParseArgs.ARGP_COND_REF_OF_OP, InterpreterArgs.ARGI_COND_REF_OF_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R), -/* 49 */ new OpCode(OpCodeEnum.CreateField, ParseArgs.ARGP_CREATE_FIELD_OP, InterpreterArgs.ARGI_CREATE_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Field | OpCodeFlags.Create), -/* 4A */ new OpCode(OpCodeEnum.Load, ParseArgs.ARGP_LOAD_OP, InterpreterArgs.ARGI_LOAD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_0R), -/* 4B */ new OpCode(OpCodeEnum.Stall, ParseArgs.ARGP_STALL_OP, InterpreterArgs.ARGI_STALL_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), -/* 4C */ new OpCode(OpCodeEnum.Sleep, ParseArgs.ARGP_SLEEP_OP, InterpreterArgs.ARGI_SLEEP_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), -/* 4D */ new OpCode(OpCodeEnum.Acquire, ParseArgs.ARGP_ACQUIRE_OP, InterpreterArgs.ARGI_ACQUIRE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R), -/* 4E */ new OpCode(OpCodeEnum.Signal, ParseArgs.ARGP_SIGNAL_OP, InterpreterArgs.ARGI_SIGNAL_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), -/* 4F */ new OpCode(OpCodeEnum.Wait, ParseArgs.ARGP_WAIT_OP, InterpreterArgs.ARGI_WAIT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R), -/* 50 */ new OpCode(OpCodeEnum.Reset, ParseArgs.ARGP_RESET_OP, InterpreterArgs.ARGI_RESET_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), -/* 51 */ new OpCode(OpCodeEnum.Release, ParseArgs.ARGP_RELEASE_OP, InterpreterArgs.ARGI_RELEASE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), -/* 52 */ new OpCode(OpCodeEnum.FromBCD, ParseArgs.ARGP_FROM_BCD_OP, InterpreterArgs.ARGI_FROM_BCD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), -/* 53 */ new OpCode(OpCodeEnum.ToBCD, ParseArgs.ARGP_TO_BCD_OP, InterpreterArgs.ARGI_TO_BCD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), -/* 54 */ new OpCode(OpCodeEnum.Unload, ParseArgs.ARGP_UNLOAD_OP, InterpreterArgs.ARGI_UNLOAD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), -/* 55 */ new OpCode(OpCodeEnum.Revision, ParseArgs.ARGP_REVISION_OP, InterpreterArgs.ARGI_REVISION_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Constant, 0), -/* 56 */ new OpCode(OpCodeEnum.Debug, ParseArgs.ARGP_DEBUG_OP, InterpreterArgs.ARGI_DEBUG_OP, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.Constant, 0), -/* 57 */ new OpCode(OpCodeEnum.Fatal, ParseArgs.ARGP_FATAL_OP, InterpreterArgs.ARGI_FATAL_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_3A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_3A_0T_0R), -/* 58 */ new OpCode(OpCodeEnum.Region, ParseArgs.ARGP_REGION_OP, InterpreterArgs.ARGI_REGION_OP, ObjectTypeEnum.Region, OpCodeClass.NamedObject, OpCodeType.NamedComplex, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named | OpCodeFlags.Defer), -/* 59 */ new OpCode(OpCodeEnum.Field, ParseArgs.ARGP_FIELD_OP, InterpreterArgs.ARGI_FIELD_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.Field), -/* 5A */ new OpCode(OpCodeEnum.Device, ParseArgs.ARGP_DEVICE_OP, InterpreterArgs.ARGI_DEVICE_OP, ObjectTypeEnum.Device, OpCodeClass.NamedObject, OpCodeType.NamedNoObject, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 5B */ new OpCode(OpCodeEnum.Processor, ParseArgs.ARGP_PROCESSOR_OP, InterpreterArgs.ARGI_PROCESSOR_OP, ObjectTypeEnum.Processor, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 5C */ new OpCode(OpCodeEnum.PowerResource, ParseArgs.ARGP_POWER_RES_OP, InterpreterArgs.ARGI_POWER_RES_OP, ObjectTypeEnum.Power, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 5D */ new OpCode(OpCodeEnum.ThermalZone, ParseArgs.ARGP_THERMAL_ZONE_OP, InterpreterArgs.ARGI_THERMAL_ZONE_OP, ObjectTypeEnum.Thermal, OpCodeClass.NamedObject, OpCodeType.NamedNoObject, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 5E */ new OpCode(OpCodeEnum.IndexField, ParseArgs.ARGP_INDEX_FIELD_OP, InterpreterArgs.ARGI_INDEX_FIELD_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.Field), -/* 5F */ new OpCode(OpCodeEnum.BankField, ParseArgs.ARGP_BANK_FIELD_OP, InterpreterArgs.ARGI_BANK_FIELD_OP, ObjectTypeEnum.LocalBankField, OpCodeClass.NamedObject, OpCodeType.NamedField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.Field | OpCodeFlags.Defer), +/* 49 */ new OpCode(OpCodeEnum.CreateField, ParseArgs.ARGP_CREATE_FIELD_OP, InterpreterArgs.ARGI_CREATE_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Field | OpCodeFlags.Create), +/* 4A */ new OpCode(OpCodeEnum.Load, ParseArgs.ARGP_LOAD_OP, InterpreterArgs.ARGI_LOAD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_0R), +/* 4B */ new OpCode(OpCodeEnum.Stall, ParseArgs.ARGP_STALL_OP, InterpreterArgs.ARGI_STALL_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), +/* 4C */ new OpCode(OpCodeEnum.Sleep, ParseArgs.ARGP_SLEEP_OP, InterpreterArgs.ARGI_SLEEP_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), +/* 4D */ new OpCode(OpCodeEnum.Acquire, ParseArgs.ARGP_ACQUIRE_OP, InterpreterArgs.ARGI_ACQUIRE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R), +/* 4E */ new OpCode(OpCodeEnum.Signal, ParseArgs.ARGP_SIGNAL_OP, InterpreterArgs.ARGI_SIGNAL_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), +/* 4F */ new OpCode(OpCodeEnum.Wait, ParseArgs.ARGP_WAIT_OP, InterpreterArgs.ARGI_WAIT_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_0T_1R), +/* 50 */ new OpCode(OpCodeEnum.Reset, ParseArgs.ARGP_RESET_OP, InterpreterArgs.ARGI_RESET_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), +/* 51 */ new OpCode(OpCodeEnum.Release, ParseArgs.ARGP_RELEASE_OP, InterpreterArgs.ARGI_RELEASE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), +/* 52 */ new OpCode(OpCodeEnum.FromBCD, ParseArgs.ARGP_FROM_BCD_OP, InterpreterArgs.ARGI_FROM_BCD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 53 */ new OpCode(OpCodeEnum.ToBCD, ParseArgs.ARGP_TO_BCD_OP, InterpreterArgs.ARGI_TO_BCD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 54 */ new OpCode(OpCodeEnum.Unload, ParseArgs.ARGP_UNLOAD_OP, InterpreterArgs.ARGI_UNLOAD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_0T_0R), +/* 55 */ new OpCode(OpCodeEnum.Revision, ParseArgs.ARGP_REVISION_OP, InterpreterArgs.ARGI_REVISION_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Constant, 0), +/* 56 */ new OpCode(OpCodeEnum.Debug, ParseArgs.ARGP_DEBUG_OP, InterpreterArgs.ARGI_DEBUG_OP, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.Constant, 0), +/* 57 */ new OpCode(OpCodeEnum.Fatal, ParseArgs.ARGP_FATAL_OP, InterpreterArgs.ARGI_FATAL_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_3A_0T_0R, OpCodeExtendedFlags.AML_FLAGS_EXEC_3A_0T_0R), +/* 58 */ new OpCode(OpCodeEnum.Region, ParseArgs.ARGP_REGION_OP, InterpreterArgs.ARGI_REGION_OP, ObjectTypeEnum.Region, OpCodeClass.NamedObject, OpCodeType.NamedComplex, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named | OpCodeFlags.Defer), +/* 59 */ new OpCode(OpCodeEnum.Field, ParseArgs.ARGP_FIELD_OP, InterpreterArgs.ARGI_FIELD_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.Field), +/* 5A */ new OpCode(OpCodeEnum.Device, ParseArgs.ARGP_DEVICE_OP, InterpreterArgs.ARGI_DEVICE_OP, ObjectTypeEnum.Device, OpCodeClass.NamedObject, OpCodeType.NamedNoObject, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 5B */ new OpCode(OpCodeEnum.Processor, ParseArgs.ARGP_PROCESSOR_OP, InterpreterArgs.ARGI_PROCESSOR_OP, ObjectTypeEnum.Processor, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 5C */ new OpCode(OpCodeEnum.PowerResource, ParseArgs.ARGP_POWER_RES_OP, InterpreterArgs.ARGI_POWER_RES_OP, ObjectTypeEnum.Power, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 5D */ new OpCode(OpCodeEnum.ThermalZone, ParseArgs.ARGP_THERMAL_ZONE_OP, InterpreterArgs.ARGI_THERMAL_ZONE_OP, ObjectTypeEnum.Thermal, OpCodeClass.NamedObject, OpCodeType.NamedNoObject, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 5E */ new OpCode(OpCodeEnum.IndexField, ParseArgs.ARGP_INDEX_FIELD_OP, InterpreterArgs.ARGI_INDEX_FIELD_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.Field), +/* 5F */ new OpCode(OpCodeEnum.BankField, ParseArgs.ARGP_BANK_FIELD_OP, InterpreterArgs.ARGI_BANK_FIELD_OP, ObjectTypeEnum.LocalBankField, OpCodeClass.NamedObject, OpCodeType.NamedField, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.Field | OpCodeFlags.Defer), /* Internal opcodes that map to invalid AML opcodes */ /* 60 */ new OpCode(OpCodeEnum.LogicalNotEqual, ParseArgs.ARGP_LNOTEQUAL_OP, InterpreterArgs.ARGI_LNOTEQUAL_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, OpCodeFlags.HasArguments | OpCodeFlags.Constant), /* 61 */ new OpCode(OpCodeEnum.LogicalLessEqual, ParseArgs.ARGP_LLESSEQUAL_OP, InterpreterArgs.ARGI_LLESSEQUAL_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, OpCodeFlags.HasArguments | OpCodeFlags.Constant), /* 62 */ new OpCode(OpCodeEnum.LogicalGreaterEqual, ParseArgs.ARGP_LGREATEREQUAL_OP, InterpreterArgs.ARGI_LGREATEREQUAL_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, OpCodeFlags.HasArguments | OpCodeFlags.Constant), -/* 63 */ new OpCode(OpCodeEnum.NamePath, ParseArgs.ARGP_NAMEPATH_OP, InterpreterArgs.ARGI_NAMEPATH_OP, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.NSObject | OpCodeFlags.NSNode ), -/* 64 */ new OpCode(OpCodeEnum.MethodCall, ParseArgs.ARGP_METHODCALL_OP, InterpreterArgs.ARGI_METHODCALL_OP, ObjectTypeEnum.Method, OpCodeClass.MethodCall, OpCodeType.MethodCall, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode), -/* 65 */ new OpCode(OpCodeEnum.ByteList, ParseArgs.ARGP_BYTELIST_OP, InterpreterArgs.ARGI_BYTELIST_OP, ObjectTypeEnum.Any, OpCodeClass.Argument, OpCodeType.Literal, 0), -/* 66 */ new OpCode(OpCodeEnum.ReservedField, ParseArgs.ARGP_RESERVEDFIELD_OP, InterpreterArgs.ARGI_RESERVEDFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, 0), -/* 67 */ new OpCode(OpCodeEnum.NamedField, ParseArgs.ARGP_NAMEDFIELD_OP, InterpreterArgs.ARGI_NAMEDFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named ), -/* 68 */ new OpCode(OpCodeEnum.AccessField, ParseArgs.ARGP_ACCESSFIELD_OP, InterpreterArgs.ARGI_ACCESSFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, 0), -/* 69 */ new OpCode(OpCodeEnum.String, ParseArgs.ARGP_STATICSTRING_OP, InterpreterArgs.ARGI_STATICSTRING_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, 0), -/* 6A */ new OpCode(OpCodeEnum.ReturnValue, ParseArgs.ARG_NONE, InterpreterArgs.ARG_NONE, ObjectTypeEnum.Any, OpCodeClass.ReturnValue, OpCodeType.Return, OpCodeFlags.HasArguments | OpCodeFlags.HasReturnValue), -/* 6B */ new OpCode("-UNKNOWN_OP-", ParseArgs.ARG_NONE, InterpreterArgs.ARG_NONE, ObjectTypeEnum.Invalid, OpCodeClass.ClassUnknown, OpCodeType.Bogus, OpCodeFlags.HasArguments), -/* 6C */ new OpCode("-ASCII_ONLY-", ParseArgs.ARG_NONE, InterpreterArgs.ARG_NONE, ObjectTypeEnum.Any, OpCodeClass.ASCII, OpCodeType.Bogus, OpCodeFlags.HasArguments), -/* 6D */ new OpCode("-PREFIX_ONLY-", ParseArgs.ARG_NONE, InterpreterArgs.ARG_NONE, ObjectTypeEnum.Any, OpCodeClass.Prefix, OpCodeType.Bogus, OpCodeFlags.HasArguments), +/* 63 */ new OpCode(OpCodeEnum.NamePath, ParseArgs.ARGP_NAMEPATH_OP, InterpreterArgs.ARGI_NAMEPATH_OP, ObjectTypeEnum.LocalReference, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.NSObject | OpCodeFlags.NSNode ), +/* 64 */ new OpCode(OpCodeEnum.MethodCall, ParseArgs.ARGP_METHODCALL_OP, InterpreterArgs.ARGI_METHODCALL_OP, ObjectTypeEnum.Method, OpCodeClass.MethodCall, OpCodeType.MethodCall, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode), +/* 65 */ new OpCode(OpCodeEnum.ByteList, ParseArgs.ARGP_BYTELIST_OP, InterpreterArgs.ARGI_BYTELIST_OP, ObjectTypeEnum.Any, OpCodeClass.Argument, OpCodeType.Literal, 0), +/* 66 */ new OpCode(OpCodeEnum.ReservedField, ParseArgs.ARGP_RESERVEDFIELD_OP, InterpreterArgs.ARGI_RESERVEDFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, 0), +/* 67 */ new OpCode(OpCodeEnum.NamedField, ParseArgs.ARGP_NAMEDFIELD_OP, InterpreterArgs.ARGI_NAMEDFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named ), +/* 68 */ new OpCode(OpCodeEnum.AccessField, ParseArgs.ARGP_ACCESSFIELD_OP, InterpreterArgs.ARGI_ACCESSFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, 0), +/* 69 */ new OpCode(OpCodeEnum.String, ParseArgs.ARGP_STATICSTRING_OP, InterpreterArgs.ARGI_STATICSTRING_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, 0), +/* 6A */ new OpCode(OpCodeEnum.ReturnValue, ParseArgs.ARG_NONE, InterpreterArgs.ARG_NONE, ObjectTypeEnum.Any, OpCodeClass.ReturnValue, OpCodeType.Return, OpCodeFlags.HasArguments | OpCodeFlags.HasReturnValue), +/* 6B */ new OpCode("-UNKNOWN_OP-", ParseArgs.ARG_NONE, InterpreterArgs.ARG_NONE, ObjectTypeEnum.Invalid, OpCodeClass.ClassUnknown, OpCodeType.Bogus, OpCodeFlags.HasArguments), +/* 6C */ new OpCode("-ASCII_ONLY-", ParseArgs.ARG_NONE, InterpreterArgs.ARG_NONE, ObjectTypeEnum.Any, OpCodeClass.ASCII, OpCodeType.Bogus, OpCodeFlags.HasArguments), +/* 6D */ new OpCode("-PREFIX_ONLY-", ParseArgs.ARG_NONE, InterpreterArgs.ARG_NONE, ObjectTypeEnum.Any, OpCodeClass.Prefix, OpCodeType.Bogus, OpCodeFlags.HasArguments), /* ACPI 2.0 opcodes */ -/* 6E */ new OpCode(OpCodeEnum.QWord, ParseArgs.ARGP_QWORD_OP, InterpreterArgs.ARGI_QWORD_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), +/* 6E */ new OpCode(OpCodeEnum.QWord, ParseArgs.ARGP_QWORD_OP, InterpreterArgs.ARGI_QWORD_OP, ObjectTypeEnum.Integer, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant), /* 6F */ new OpCode(OpCodeEnum.Package, /* Var */ ParseArgs.ARGP_VAR_PACKAGE_OP, InterpreterArgs.ARGI_VAR_PACKAGE_OP, ObjectTypeEnum.Package, OpCodeClass.Create, OpCodeType.CreateObject, OpCodeFlags.HasArguments | OpCodeFlags.Defer), -/* 70 */ new OpCode(OpCodeEnum.ConcatenateTemplate, ParseArgs.ARGP_CONCAT_RES_OP, InterpreterArgs.ARGI_CONCAT_RES_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Constant), -/* 71 */ new OpCode(OpCodeEnum.Mod, ParseArgs.ARGP_MOD_OP, InterpreterArgs.ARGI_MOD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Constant), -/* 72 */ new OpCode(OpCodeEnum.CreateQWordField, ParseArgs.ARGP_CREATE_QWORD_FIELD_OP,InterpreterArgs.ARGI_CREATE_QWORD_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags. HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), -/* 73 */ new OpCode(OpCodeEnum.ToBuffer, ParseArgs.ARGP_TO_BUFFER_OP, InterpreterArgs.ARGI_TO_BUFFER_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), -/* 74 */ new OpCode(OpCodeEnum.ToDecimalString, ParseArgs.ARGP_TO_DEC_STR_OP, InterpreterArgs.ARGI_TO_DEC_STR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), -/* 75 */ new OpCode(OpCodeEnum.ToHexString, ParseArgs.ARGP_TO_HEX_STR_OP, InterpreterArgs.ARGI_TO_HEX_STR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), -/* 76 */ new OpCode(OpCodeEnum.ToInteger, ParseArgs.ARGP_TO_INTEGER_OP, InterpreterArgs.ARGI_TO_INTEGER_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), -/* 77 */ new OpCode(OpCodeEnum.ToString, ParseArgs.ARGP_TO_STRING_OP, InterpreterArgs.ARGI_TO_STRING_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Constant), -/* 78 */ new OpCode(OpCodeEnum.CopyObject, ParseArgs.ARGP_COPY_OP, InterpreterArgs.ARGI_COPY_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R), -/* 79 */ new OpCode(OpCodeEnum.Mid, ParseArgs.ARGP_MID_OP, InterpreterArgs.ARGI_MID_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_3A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_3A_1T_1R | OpCodeFlags.Constant), -/* 7A */ new OpCode(OpCodeEnum.Continue, ParseArgs.ARGP_CONTINUE_OP, InterpreterArgs.ARGI_CONTINUE_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, 0), -/* 7B */ new OpCode(OpCodeEnum.LoadTable, ParseArgs.ARGP_LOAD_TABLE_OP, InterpreterArgs.ARGI_LOAD_TABLE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_6A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_6A_0T_1R), -/* 7C */ new OpCode(OpCodeEnum.DataRegion, ParseArgs.ARGP_DATA_REGION_OP, InterpreterArgs.ARGI_DATA_REGION_OP, ObjectTypeEnum.Region, OpCodeClass.NamedObject, OpCodeType.NamedComplex, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named | OpCodeFlags.Defer), -/* 7D */ new OpCode(OpCodeEnum.Scope, ParseArgs.ARGP_SCOPE_OP, InterpreterArgs.ARGI_SCOPE_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedNoObject, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode), +/* 70 */ new OpCode(OpCodeEnum.ConcatenateTemplate, ParseArgs.ARGP_CONCAT_RES_OP, InterpreterArgs.ARGI_CONCAT_RES_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Constant), +/* 71 */ new OpCode(OpCodeEnum.Mod, ParseArgs.ARGP_MOD_OP, InterpreterArgs.ARGI_MOD_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Constant), +/* 72 */ new OpCode(OpCodeEnum.CreateQWordField, ParseArgs.ARGP_CREATE_QWORD_FIELD_OP,InterpreterArgs.ARGI_CREATE_QWORD_FIELD_OP, ObjectTypeEnum.BufferField, OpCodeClass.Create, OpCodeType.CreateField, OpCodeFlags. HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSNode | OpCodeFlags.Defer | OpCodeFlags.Create), +/* 73 */ new OpCode(OpCodeEnum.ToBuffer, ParseArgs.ARGP_TO_BUFFER_OP, InterpreterArgs.ARGI_TO_BUFFER_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 74 */ new OpCode(OpCodeEnum.ToDecimalString, ParseArgs.ARGP_TO_DEC_STR_OP, InterpreterArgs.ARGI_TO_DEC_STR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 75 */ new OpCode(OpCodeEnum.ToHexString, ParseArgs.ARGP_TO_HEX_STR_OP, InterpreterArgs.ARGI_TO_HEX_STR_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 76 */ new OpCode(OpCodeEnum.ToInteger, ParseArgs.ARGP_TO_INTEGER_OP, InterpreterArgs.ARGI_TO_INTEGER_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R | OpCodeFlags.Constant), +/* 77 */ new OpCode(OpCodeEnum.ToString, ParseArgs.ARGP_TO_STRING_OP, InterpreterArgs.ARGI_TO_STRING_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_2A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_2A_1T_1R | OpCodeFlags.Constant), +/* 78 */ new OpCode(OpCodeEnum.CopyObject, ParseArgs.ARGP_COPY_OP, InterpreterArgs.ARGI_COPY_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_1A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_1A_1T_1R), +/* 79 */ new OpCode(OpCodeEnum.Mid, ParseArgs.ARGP_MID_OP, InterpreterArgs.ARGI_MID_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_3A_1T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_3A_1T_1R | OpCodeFlags.Constant), +/* 7A */ new OpCode(OpCodeEnum.Continue, ParseArgs.ARGP_CONTINUE_OP, InterpreterArgs.ARGI_CONTINUE_OP, ObjectTypeEnum.Any, OpCodeClass.Control, OpCodeType.Control, 0), +/* 7B */ new OpCode(OpCodeEnum.LoadTable, ParseArgs.ARGP_LOAD_TABLE_OP, InterpreterArgs.ARGI_LOAD_TABLE_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_6A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_6A_0T_1R), +/* 7C */ new OpCode(OpCodeEnum.DataRegion, ParseArgs.ARGP_DATA_REGION_OP, InterpreterArgs.ARGI_DATA_REGION_OP, ObjectTypeEnum.Region, OpCodeClass.NamedObject, OpCodeType.NamedComplex, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named | OpCodeFlags.Defer), +/* 7D */ new OpCode(OpCodeEnum.Scope, ParseArgs.ARGP_SCOPE_OP, InterpreterArgs.ARGI_SCOPE_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedNoObject, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode), /* ACPI 3.0 opcodes */ -/* 7E */ new OpCode(OpCodeEnum.Timer, ParseArgs.ARGP_TIMER_OP, InterpreterArgs.ARGI_TIMER_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_0A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_0A_0T_1R), +/* 7E */ new OpCode(OpCodeEnum.Timer, ParseArgs.ARGP_TIMER_OP, InterpreterArgs.ARGI_TIMER_OP, ObjectTypeEnum.Any, OpCodeClass.Execute, OpCodeType.Execute_0A_0T_1R, OpCodeExtendedFlags.AML_FLAGS_EXEC_0A_0T_1R), /* ACPI 5.0 opcodes */ -/* 7F */ new OpCode(OpCodeEnum.FieldConnection, ParseArgs.ARGP_CONNECTFIELD_OP, InterpreterArgs.ARGI_CONNECTFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, OpCodeFlags.HasArguments), -/* 80 */ new OpCode(OpCodeEnum.ExternalAccessField, ParseArgs.ARGP_CONNECTFIELD_OP, InterpreterArgs.ARGI_CONNECTFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, 0), +/* 7F */ new OpCode(OpCodeEnum.FieldConnection, ParseArgs.ARGP_CONNECTFIELD_OP, InterpreterArgs.ARGI_CONNECTFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, OpCodeFlags.HasArguments), +/* 80 */ new OpCode(OpCodeEnum.ExternalAccessField, ParseArgs.ARGP_CONNECTFIELD_OP, InterpreterArgs.ARGI_CONNECTFIELD_OP, ObjectTypeEnum.Any, OpCodeClass.Internal, OpCodeType.Bogus, 0), /* ACPI 6.0 opcodes */ -/* 81 */ new OpCode(OpCodeEnum.External, ParseArgs.ARGP_EXTERNAL_OP, InterpreterArgs.ARGI_EXTERNAL_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), -/* 82 */ new OpCode(OpCodeEnum.Comment, ParseArgs.ARGP_COMMENT_OP, InterpreterArgs.ARGI_COMMENT_OP, ObjectTypeEnum.String, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant) +/* 81 */ new OpCode(OpCodeEnum.External, ParseArgs.ARGP_EXTERNAL_OP, InterpreterArgs.ARGI_EXTERNAL_OP, ObjectTypeEnum.Any, OpCodeClass.NamedObject, OpCodeType.NamedSimple, OpCodeFlags.HasArguments | OpCodeFlags.NSObject | OpCodeFlags.NSOpCode | OpCodeFlags.NSNode | OpCodeFlags.Named), +/* 82 */ new OpCode(OpCodeEnum.Comment, ParseArgs.ARGP_COMMENT_OP, InterpreterArgs.ARGI_COMMENT_OP, ObjectTypeEnum.String, OpCodeClass.Argument, OpCodeType.Literal, OpCodeFlags.Constant) }; public static OpCode GetOpcode(ushort opCodeValue) diff --git a/source/Cosmos.Core/ACPI/Interupter/EisaId.cs b/source/Cosmos.Core/ACPI/Interupter/EisaId.cs new file mode 100644 index 0000000000..969a41f5a5 --- /dev/null +++ b/source/Cosmos.Core/ACPI/Interupter/EisaId.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ACPIAML.Interupter +{ + public class EisaId + { + public static string ToText(long ID) + { + var vendor = ID & 0xFFFF; + var device = ID >> 16; + var device1 = device & 0xFF; + var device2 = device >> 8; + var vendor_rev = ((vendor & 0xFF) << 8) | vendor >> 8; + var vendor1 = ((vendor_rev >> 10)&0x1f)+64; + var vendor2 = ((vendor_rev >> 5)&0x1f)+64; + var vendor3= ((vendor_rev >> 0)&0x1f)+64; + + string vendorStr = new(new char[] { (char)vendor1 , (char)vendor2 , (char)vendor3 }); + return vendorStr + device1.ToString("X2") + device2.ToString("X2"); + } + } +} diff --git a/source/Cosmos.Core/ACPI/Interupter/StackObject.cs b/source/Cosmos.Core/ACPI/Interupter/StackObject.cs new file mode 100644 index 0000000000..076177bc95 --- /dev/null +++ b/source/Cosmos.Core/ACPI/Interupter/StackObject.cs @@ -0,0 +1,69 @@ +using ACPILib.Parser2; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ACPIAML.Interupter +{ + public class StackObject + { + private StackObject() + { + + } + + public object? Value; + public StackObjectType Type; + + public static StackObject Create(string s) + { + return new() { Type = StackObjectType.String, Value = s }; + } + public static StackObject Create(ParseNode s) + { + return new() { Type = StackObjectType.ParseNode, Value = s }; + } + public static StackObject Create(byte s) + { + return new() { Type = StackObjectType.Byte, Value = s }; + } + public static StackObject Create(short s) + { + return new() { Type = StackObjectType.Word, Value = s }; + } + public static StackObject Create(int s) + { + return new() { Type = StackObjectType.DWord, Value = s }; + } + public static StackObject Create(long s) + { + return new() { Type = StackObjectType.QWord, Value = s }; + } + public static StackObject Create(byte[] s) + { + return new() { Type = StackObjectType.ByteArray, Value = s }; + } + } + public enum StackObjectType + { + Null, + ParseNode, + String, + Byte, + ByteArray, + /// + /// short + /// + Word, + /// + /// int + /// + DWord, + /// + /// long + /// + QWord, + } +} diff --git a/source/Cosmos.Core/ACPI/Parser/Parser.cs b/source/Cosmos.Core/ACPI/Parser/Parser.cs index d103b151e4..862ab711d4 100644 --- a/source/Cosmos.Core/ACPI/Parser/Parser.cs +++ b/source/Cosmos.Core/ACPI/Parser/Parser.cs @@ -463,7 +463,7 @@ private void ParseOp(AMLOp op, bool isMethodBody) break; default: - throw new NotImplementedException(); + throw new NotImplementedException("Unknown opcode"); } } } diff --git a/source/Cosmos.Core/ACPI/Parser2/ParseNode.cs b/source/Cosmos.Core/ACPI/Parser2/ParseNode.cs index e5cc7dc544..baec302b49 100644 --- a/source/Cosmos.Core/ACPI/Parser2/ParseNode.cs +++ b/source/Cosmos.Core/ACPI/Parser2/ParseNode.cs @@ -1,4 +1,5 @@ -using ACPILib.AML; +using ACPIAML.Interupter; +using ACPILib.AML; using System.Collections.Generic; namespace ACPILib.Parser2 @@ -17,8 +18,8 @@ public long End get { return Start + Length + Op.CodeByteSize; } } - public object ConstantValue; - public List Arguments = new List(); + public StackObject? ConstantValue; + public List Arguments = new List(); public List Nodes = new List(); public override string ToString() diff --git a/source/Cosmos.Core/ACPI/Parser2/Parser2.cs b/source/Cosmos.Core/ACPI/Parser2/Parser2.cs index 28b77795fb..38a2667dd5 100644 --- a/source/Cosmos.Core/ACPI/Parser2/Parser2.cs +++ b/source/Cosmos.Core/ACPI/Parser2/Parser2.cs @@ -1,4 +1,5 @@ -using ACPILib.AML; +using ACPIAML.Interupter; +using ACPILib.AML; using System; using System.Collections.Generic; using System.IO; @@ -6,402 +7,532 @@ namespace ACPILib.Parser2 { - public class Parser - { - private Stream _source; - - public bool stop = false; - - public Parser(Stream s) - { - _source = s; - } - - public ParseNode Parse() - { - return PreParse(); - } - - ParseNode root; - - private ParseNode PreParse() - { - root = new ParseNode() - { - Name = "\\" - }; - - while (_source.Position < _source.Length) - { - ParseNode op = ParseFullOpCodeNode(); - - root.Nodes.Add(op); - - if (stop == true) - { - return root; - } - } - - return root; - } - - private ParseNode ParseFullOpCodeNode() - { - //Read the opcode - ParseNode op = ReadOpCode(); - OpCode info = op.Op; - - _source.Seek(op.DataStart, SeekOrigin.Begin); - - //Parse opcode arguments - if (info.ParseArgs.Length > 0) - { - bool parseArguments = false; - - switch (info.Code) - { - case OpCodeEnum.Byte: - case OpCodeEnum.Word: - case OpCodeEnum.DWord: - case OpCodeEnum.QWord: - case OpCodeEnum.String: - op.ConstantValue = ParseSimpleArgument(info.ParseArgs[0]); - break; - - case OpCodeEnum.NamePath: - op.Arguments.Add(ReadNameString()); - break; - - default: - parseArguments = true; - break; - } - - if (parseArguments) //If the opcode is not a constant - { - for (int x = 0; x < info.ParseArgs.Length; x++) - { - switch (info.ParseArgs[x]) - { - case ParseArgFlags.None: - break; - - case ParseArgFlags.ByteData: - case ParseArgFlags.WordData: - case ParseArgFlags.DWordData: - case ParseArgFlags.CharList: - case ParseArgFlags.Name: - case ParseArgFlags.NameString: - { - object arg = ParseSimpleArgument(info.ParseArgs[x]); - if (arg != null) - { - op.Arguments.Add(arg); - } - } - break; - - case ParseArgFlags.DataObject: - case ParseArgFlags.TermArg: - { - ParseNode arg = ParseFullOpCodeNode(); - - op.Arguments.Add(arg); - } - break; - - case ParseArgFlags.PackageLength: - op.Arguments.Add(op.Length = ReadPackageLength()); - break; - - case ParseArgFlags.FieldList: - while (_source.Position < op.End) - { - op.Arguments.Add(ReadField()); - } - break; - - case ParseArgFlags.ByteList: - if (_source.Position < op.End) - { - op.ConstantValue = ReadBytes((int)(op.End - _source.Position)); - } - break; - - case ParseArgFlags.DataObjectList: - case ParseArgFlags.TermList: - case ParseArgFlags.ObjectList: - - if (op.Op.Code == OpCodeEnum.Method) - _source.Seek(op.End, SeekOrigin.Begin); - else - { - while (_source.Position < op.End) - { - ParseNode child = ParseFullOpCodeNode(); - - op.Nodes.Add(child); - } - } - - break; - - default: - throw new Exception("psargs.c / line 913 - Unknown arg: " + op.Op.ParseArgs[x].ToString()); - } - } - } - } - - //Parse the opcode - if ((info.Flags & OpCodeFlags.Named) == OpCodeFlags.Named) - { - for (int x = 0; x < info.ParseArgs.Length; x++) - { - if (info.ParseArgs[x] == ParseArgFlags.Name) - { - op.Name = (string)op.Arguments[x]; - break; - } - } - } - - if (op.Op.ToString() == "Return") - { - stop = true; - } - - return op; - } - - private ParseNode ReadField() - { - OpCodeEnum opCode; - switch ((OpCodeEnum)PeekByte()) - { - case OpCodeEnum.FieldOffset: - - opCode = OpCodeEnum.ReservedField; ; - _source.Seek(1, SeekOrigin.Current); - break; - - case OpCodeEnum.FieldAccess: - - opCode = OpCodeEnum.AccessField; - _source.Seek(1, SeekOrigin.Current); - break; - - case OpCodeEnum.FieldConnection: - - opCode = OpCodeEnum.Connection; - _source.Seek(1, SeekOrigin.Current); - break; - - case OpCodeEnum.FieldExternalAccess: - - opCode = OpCodeEnum.ExternalAccessField; - _source.Seek(1, SeekOrigin.Current); - break; - - default: - opCode = OpCodeEnum.NamedField; - break; - } - - ParseNode node = new ParseNode() - { - Op = OpCodeTable.GetOpcode((ushort)opCode) - }; - - switch (opCode) - { - case OpCodeEnum.NamedField: - node.Name = Read4ByteName(); - node.ConstantValue = ReadPackageLength(); - break; - case OpCodeEnum.ReservedField: - node.ConstantValue = ReadPackageLength(); - break; - case OpCodeEnum.AccessField: - node.ConstantValue = (ReadByte() | ((uint)ReadByte() << 8)); - break; - case OpCodeEnum.ExternalAccessField: - node.ConstantValue = (ReadByte() | ((uint)ReadByte() << 8) | ((uint)ReadByte() << 16)); - break; - - default: - throw new Exception("psargs.c / line 703"); - } - - return node; - } - - private int ReadPackageLength() - { - int length = 0; - - byte b0 = (byte)_source.ReadByte(); - - int byteCount = (b0 >> 6); - - byte firstMask = (byte)(byteCount > 0 ? 0x0F : 0x3F); - - for (int b = 0; b < byteCount; b++) - { - length |= ((byte)_source.ReadByte() << ((byteCount << 3) - 4)); - } - - length |= (b0 & firstMask); - - return length; - } - - private object ParseSimpleArgument(ParseArgFlags arg) - { - switch (arg) - { - case ParseArgFlags.ByteData: - return (byte)_source.ReadByte(); - case ParseArgFlags.WordData: - return BitConverter.ToInt16(ReadBytes(2), 0); - case ParseArgFlags.DWordData: - return BitConverter.ToInt32(ReadBytes(4), 0); - case ParseArgFlags.QWordData: - return BitConverter.ToInt64(ReadBytes(8), 0); - case ParseArgFlags.CharList: //Nullterminated string - string str = string.Empty; - - byte read; - while ((read = (byte)_source.ReadByte()) != 0) - str += (char)read; - - return str; - case ParseArgFlags.Name: - case ParseArgFlags.NameString: - return ReadNameString(); - } - - return null; - } - - private string ReadNameString() - { - //Read past prefix chars - while (Definitions.IsNameRootPrefixOrParentPrefix(PeekByte())) - { - _source.Seek(1, SeekOrigin.Current); - } - - int segments = 0; - switch (ReadByte()) - { - case 0: //Null string - return string.Empty; - - case Definitions.DualNamePrefix: - segments = 2; - break; - case Definitions.MultiNamePrefix: - segments = ReadByte(); - break; - - default: - segments = 1; - - _source.Seek(-1, SeekOrigin.Current); - break; - } - - string name = string.Empty; - - for (int seg = 0; seg < segments; seg++) - { - string nameSeg = Read4ByteName(); - - name += nameSeg; - - if (seg < segments - 1) - name += "."; - } - - return name; - } - - private ParseNode ReadOpCode() - { - long pos = _source.Position; - - ushort op = PeekOpcode(); - OpCode info = OpCodeTable.GetOpcode(op); - - switch (info.Class) - { - case OpCodeClass.ASCII: - case OpCodeClass.Prefix: - info = OpCodeTable.GetOpcode((ushort)OpCodeEnum.NamePath); - pos -= 1; //The op code byte is the data itself - break; - case OpCodeClass.ClassUnknown: - throw new Exception("Unknown AML opcode: 0x" + op.ToString("X2")); - default: - _source.Seek(info.CodeByteSize, SeekOrigin.Current); - break; - } - - return new ParseNode() - { - Op = info, - Start = pos, - DataStart = pos + info.CodeByteSize - }; - } - - private string Read4ByteName() - { - byte[] dt = new byte[4]; - _source.Read(dt, 0, 4); - - return Encoding.ASCII.GetString(dt); - } - - private byte[] ReadBytes(int num) - { - byte[] temp = new byte[num]; - _source.Read(temp, 0, num); - - return temp; - } - - private byte PeekByte() - { - byte read = (byte)_source.ReadByte(); - - _source.Seek(-1, SeekOrigin.Current); - - return read; - } - - private byte ReadByte() - { - return (byte)_source.ReadByte(); - } - - private ushort PeekOpcode() - { - ushort code = (ushort)_source.ReadByte(); - if (code == Definitions.ExtendedOpCodePrefix) - { - code = (ushort)((code << 8) | (ushort)_source.ReadByte()); - - _source.Seek(-2, SeekOrigin.Current); - } - else - { - _source.Seek(-1, SeekOrigin.Current); - } - - return code; - } - } + public class Parser + { + private Stream _source; + + public Parser(Stream s) + { + _source = s; + } + + public ParseNode Parse() + { + return PreParse(); + } + + private ParseNode PreParse() + { + ParseNode root = new ParseNode() + { + Name = "\\" + }; + + while (_source.Position < _source.Length) + { + ParseNode op = ParseFullOpCodeNode(); + root.Nodes.Add(op); + } + + return root; + } + + private ParseNode ParseFullOpCodeNode() + { + //Read the opcode + ParseNode op = ReadOpCode(); + OpCode info = op.Op; + + _source.Seek(op.DataStart, SeekOrigin.Begin); + long methodBodyAddr = 0; + + //Parse opcode arguments + if (info.ParseArgs.Length > 0) + { + bool parseArguments = false; + + switch (info.Code) + { + case OpCodeEnum.Byte: + case OpCodeEnum.Word: + case OpCodeEnum.DWord: + case OpCodeEnum.QWord: + case OpCodeEnum.String: + op.ConstantValue = ParseSimpleArgument(info.ParseArgs[0]); + break; + + case OpCodeEnum.NamePath: + op.Arguments.Add(StackObject.Create(ReadNameString())); + break; + + default: + parseArguments = true; + break; + } + + if (parseArguments) //If the opcode is not a constant + { + for (int x = 0; x < info.ParseArgs.Length; x++) + { + switch (info.ParseArgs[x]) + { + case ParseArgFlags.None: + break; + + case ParseArgFlags.ByteData: + case ParseArgFlags.WordData: + case ParseArgFlags.DWordData: + case ParseArgFlags.CharList: + case ParseArgFlags.Name: + case ParseArgFlags.NameString: + { + var arg = ParseSimpleArgument(info.ParseArgs[x]); + if (arg != null) + { + op.Arguments.Add(arg); + } + } + break; + case ParseArgFlags.DataObject: + case ParseArgFlags.TermArg: + { + //HACK: todo make this properly + methodBodyAddr = _source.Position; + var arg = ParseFullOpCodeNode(); //parsenode + + op.Arguments.Add(StackObject.Create(arg)); + } + break; + + case ParseArgFlags.PackageLength: + var xx = op.Length = ReadPackageLength(); + op.Arguments.Add(StackObject.Create(xx)); + break; + + case ParseArgFlags.FieldList: + while (_source.Position < op.End) + { + op.Arguments.Add(StackObject.Create(ReadField())); + } + break; + + case ParseArgFlags.ByteList: + if (_source.Position < op.End) + { + op.ConstantValue = StackObject.Create(ReadBytes((int)(op.End - _source.Position))); + } + break; + + case ParseArgFlags.DataObjectList: + case ParseArgFlags.TermList: + case ParseArgFlags.ObjectList: + var startPosition = _source.Position; + if (op.Arguments[1].Type == StackObjectType.String) + { + if ((string)op.Arguments[1].Value == "CPUS") + { + ; + } + } + while (_source.Position < op.End) + { + ParseNode child = ParseFullOpCodeNode(); + + op.Nodes.Add(child); + } + + break; + + case ParseArgFlags.Target: + case ParseArgFlags.SuperName: + ushort subOp2 = PeekUShort(); + if (subOp2 == 0 || Definitions.IsNameRootPrefixOrParentPrefix((byte)subOp2) || Definitions.IsLeadingChar((byte)subOp2)) + { + //AMLOp namePath = new AMLOp(OpCodeTable.GetOpcode((ushort)OpCodeEnum.NamePath), op); + // var xxx = ParseFullOpCodeNode(); + //xxx.Name =; + var str = ReadNameString(); + op.Arguments.Add(StackObject.Create(str)); + + + } + else + { + _source.Seek(op.DataStart, SeekOrigin.Begin); + var xxx = ParseFullOpCodeNode(); + op.Nodes.Add(xxx); + ; + } + break; + + default: + Console.WriteLine("psargs.c / line 913 - Unknown arg: " + info.ParseArgs[x]); + break; + } + } + } + } + + //Parse the opcode + if ((info.Flags & OpCodeFlags.Named) == OpCodeFlags.Named) + { + for (int x = 0; x < info.ParseArgs.Length; x++) + { + if (info.ParseArgs[x] == ParseArgFlags.Name) + { + op.Name = (string)op.Arguments[x].Value; + break; + } + } + } + + if (op.Op.Name == "Scope") + { + var orgPosition = op.DataStart; + while (_source.Position < orgPosition + op.Length) + { + ParseNode op2 = ParseFullOpCodeNode(); + op.Nodes.Add(op2); + } + } + //else if (op.Op.Name == "Method") + //{ + // //We add one because we expect a DualNamePrefix (0x2E) + // _source.Seek(methodBodyAddr, SeekOrigin.Begin); + + // ////Read until function name string ends + // //while(_source.ReadByte() != 0) + // //{ + + // //} + + // var codeEnd = op.DataStart + op.Length; + + // while (_source.Position < codeEnd) + // { + // ParseNode op2 = ParseFullOpCodeNode(); + // op.Nodes.Add(op2); + // } + //} + + return op; + } + + private ParseNode ReadField() + { + OpCodeEnum opCode; + switch ((OpCodeEnum)PeekByte()) + { + case OpCodeEnum.FieldOffset: + + opCode = OpCodeEnum.ReservedField; ; + _source.Seek(1, SeekOrigin.Current); + break; + + case OpCodeEnum.FieldAccess: + + opCode = OpCodeEnum.AccessField; + _source.Seek(1, SeekOrigin.Current); + break; + + case OpCodeEnum.FieldConnection: + + opCode = OpCodeEnum.Connection; + _source.Seek(1, SeekOrigin.Current); + break; + + case OpCodeEnum.FieldExternalAccess: + + opCode = OpCodeEnum.ExternalAccessField; + _source.Seek(1, SeekOrigin.Current); + break; + + default: + opCode = OpCodeEnum.NamedField; + break; + } + + ParseNode node = new ParseNode() + { + Op = OpCodeTable.GetOpcode((ushort)opCode) + }; + + switch (opCode) + { + case OpCodeEnum.NamedField: + node.Name = Read4ByteName(); + node.ConstantValue = StackObject.Create(ReadPackageLength()); + break; + case OpCodeEnum.ReservedField: + node.ConstantValue = StackObject.Create(ReadPackageLength()); + break; + case OpCodeEnum.AccessField: + node.ConstantValue = StackObject.Create((ReadByte() | ((uint)ReadByte() << 8))); + break; + case OpCodeEnum.ExternalAccessField: + node.ConstantValue = StackObject.Create((ReadByte() | ((uint)ReadByte() << 8) | ((uint)ReadByte() << 16))); + break; + + default: + throw new Exception("psargs.c / line 703"); + } + + return node; + } + + private int ReadPackageLength() + { + int length; + + byte b0 = (byte)ReadByte(); + + byte sz = (byte)((b0 >> 6) & 3); + + if (sz == 0) + { + //out = (size_t)(code[*pc] & 0x3F); + //(*pc)++; + //return 0; + + length = b0 & 0x3F; + } + else if (sz == 1) + { + // *out = (size_t)(code[*pc] & 0x0F) | (size_t)(code[*pc + 1] << 4); + + length = ((b0 & 0x0F) | ReadByte() << 4); + } + else if (sz == 2) + { + length = ((b0 & 0x0F) | ReadByte() << 4) | (ReadByte() << 12); + } + else if (sz == 3) + { + length = ((b0 & 0x0F) | ReadByte() << 4) | (ReadByte() << 12) | (ReadByte() << 20); + } + else + { + throw new NotImplementedException(); + } + + return length; + } + + private StackObject ParseSimpleArgument(ParseArgFlags arg) + { + switch (arg) + { + case ParseArgFlags.ByteData: + return StackObject.Create((byte)ReadByte()); + case ParseArgFlags.WordData: + return StackObject.Create(BitConverter.ToInt16(ReadBytes(2), 0)); + case ParseArgFlags.DWordData: + return StackObject.Create(BitConverter.ToInt32(ReadBytes(4), 0)); + case ParseArgFlags.QWordData: + return StackObject.Create(BitConverter.ToInt64(ReadBytes(8), 0)); + case ParseArgFlags.CharList: //Nullterminated string + string str = string.Empty; + + byte read; + while ((read = (byte)ReadByte()) != 0) + str += (char)read; + + return StackObject.Create(str); + case ParseArgFlags.Name: + case ParseArgFlags.NameString: + return StackObject.Create(ReadNameString()); + } + + return null; + } + private string ReadNameString() + { + var x = _source.Position; + var b = (char)ReadByte(); + bool is_absolute = false; + if (b == '\\') + { + is_absolute = true; + } + else + { + bool xx = false; + while ((char)PeekByte() == '^') + { + xx = true; + _source.Position++; + } + if (xx) + { + b = (char)PeekByte(); + } + } + + int segmentNumber = 0; + bool UseBChar = false; + //var b2 = (char)ReadByte(); + string o = ""; + if (b == '\0') + { + segmentNumber = 0; + } + else if (b == 0x2E) + { + //dual prefix + segmentNumber = 2; + } + else if (b == 0x2F) + { + //dual prefix + segmentNumber = ReadByte(); + } + else + { + segmentNumber = 1; //default? + o += b.ToString(); + UseBChar = true; + } + var len = segmentNumber * 4; + if (UseBChar) + len -= 1; + for (int i = 0; i < len; i++) + { + o += ((char)ReadByte()).ToString(); + } + + foreach (var item in o) + { + if (!char.IsAscii(item)) + throw new Exception("Check failed: Char is not ASCII"); + } + return o; + ////Read past prefix chars + //while (Definitions.IsNameRootPrefixOrParentPrefix(PeekByte())) + //{ + // _source.Seek(1, SeekOrigin.Current); + //} + + //int segments = 0; + //var b = ReadByte(); + //switch (b) + //{ + // case 0: //Null string + // return string.Empty; + + // case Definitions.DualNamePrefix: + // segments = 2; + // break; + // case Definitions.MultiNamePrefix: + // segments = ReadByte(); + // break; + + // default: + // segments = 1; + + // _source.Seek(-1, SeekOrigin.Current); + // break; + //} + + //string name = string.Empty; + + //for (int seg = 0; seg < segments; seg++) + //{ + // string nameSeg = Read4ByteName(); + + // name += nameSeg; + + // if (seg < segments - 1) + // name += "."; + //} + + //return name; + } + + private ParseNode ReadOpCode() + { + long pos = _source.Position; + + ushort op = ReadUShort(); + OpCode? info = OpCodeTable.GetOpcode(op); + switch (info.Class) + { + case OpCodeClass.ASCII: + case OpCodeClass.Prefix: + info = OpCodeTable.GetOpcode((ushort)OpCodeEnum.NamePath); + pos -= 1; //The op code byte is the data itself + break; + case OpCodeClass.ClassUnknown: + Console.WriteLine("Unknown AML opcode: 0x" + op.ToString("X") + " at " + _source.Position); + break; + default: + _source.Seek(info.CodeByteSize, SeekOrigin.Current); + break; + } + + return new ParseNode() + { + Op = info, + Start = pos, + DataStart = pos + info.CodeByteSize + }; + } + + private string Read4ByteName() + { + byte[] dt = new byte[4]; + _source.Read(dt, 0, 4); + + return Encoding.ASCII.GetString(dt); + } + + private byte[] ReadBytes(int num) + { + byte[] temp = new byte[num]; + _source.Read(temp, 0, num); + + return temp; + } + + private byte PeekByte() + { + byte read = (byte)_source.ReadByte(); + + _source.Seek(-1, SeekOrigin.Current); + + return read; + } + + private ushort PeekUShort() + { + ushort code = (ushort)_source.ReadByte(); + if (code == Definitions.ExtendedOpCodePrefix) + { + code = (ushort)((code << 8) | (ushort)_source.ReadByte()); + + _source.Seek(-2, SeekOrigin.Current); + } + else + { + _source.Seek(-1, SeekOrigin.Current); + } + + return code; + } + + private byte ReadByte() + { + return (byte)_source.ReadByte(); + } + + private ushort ReadUShort() + { + ushort code = (ushort)_source.ReadByte(); + if (code == Definitions.ExtendedOpCodePrefix) + { + code = (ushort)((code << 8) | (ushort)_source.ReadByte()); + } + + return code; + } + } }