19.2.5. ASL 操作码项
> CompilerDirective := > > > IncludeTerm | ExternalTerm
> NamedObject := > > > BankFieldTerm | CreateBitFieldTerm | CreateByteFieldTerm | CreateDWordFieldTerm | CreateFieldTerm | CreateQWordFieldTerm | CreateWordFieldTerm | DataRegionTerm | DeviceTerm | EventTerm | FieldTerm | FunctionTerm | IndexFieldTerm | MethodTerm | MutexTerm | OpRegionTerm | PowerResTerm | ProcessorTerm | ThermalZoneTerm
> NameSpaceModifier := > > > AliasTerm | NameTerm | ScopeTerm
> SymbolicExpressionTerm := > > > ( TermArg ) | AddSymbolicTerm | AndSymbolicTerm | DecSymbolicTerm | DivideSymbolicTerm | IncSymbolicTerm | LAndSymbolicTerm | LEqualSymbolicTerm | LGreaterEqualSymbolicTerm | LGreaterSymbolicTerm | LLessEqualSymbolicTerm | LLessSymbolicTerm | LNotEqualSymbolicTerm | LNotSymbolicTerm | LOrSymbolicTerm | ModSymbolicTerm | MultiplySymbolicTerm | NotSymbolicTerm | OrSymbolicTerm | ShiftLeftSymbolicTerm | ShiftRightSymbolicTerm | SubtractSymbolicTerm | XorSymbolicTerm
> SymbolicAssignmentTerm := > > > StoreSymbolicTerm | AddCompoundTerm | AndCompoundTerm | DivideCompoundTerm | ModCompoundTerm | MultiplyCompoundTerm | OrCompoundTerm | ShiftLeftCompoundTerm | ShiftRightCompoundTerm | SubtractCompoundTerm | XorCompoundTerm
> StatementOpcode := > > > BreakTerm | BreakPointTerm | ContinueTerm | FatalTerm | ForTerm | IfElseTerm | NoOpTerm | NotifyTerm | ReleaseTerm | ResetTerm | ReturnTerm | SignalTerm | SleepTerm | StallTerm | SwitchTerm | UnloadTerm | WhileTerm > > 语句操作码项不返回值,并且只能在一行 ASL 代码中独立使用。由于这些操作码不返回值,因此它们不能在表达式中作为项使用。
> ExpressionOpcode := > > > AcquireTerm | AddTerm | AndTerm | ConcatTerm | ConcatResTerm | CondRefOfTerm | CopyObjectTerm | DecTerm | DerefOfTerm | DivideTerm | FindSetLeftBitTerm | FindSetRightBitTerm | FprintfTerm | FromBCDTerm | IncTerm | IndexTerm | LAndTerm | LEqualTerm | LGreaterTerm | LGreaterEqualTerm | LLessTerm | LLessEqualTerm | LNotTerm | LNotEqualTerm | LOrTerm | MatchTerm | MidTerm | ModTerm | MultiplyTerm | NAndTerm | NOrTerm | NotTerm | ObjectTypeTerm | OrTerm | PrintfTerm | RefOfTerm | ShiftLeftTerm | ShiftRightTerm | SizeOfTerm | StoreTerm | SubtractTerm | TimerTerm | ToBCDTerm | ToBufferTerm | ToDecimalStringTerm | ToHexStringTerm | ToIntegerTerm | ToStringTerm | WaitTerm | XorTerm | MethodInvocationTerm | SymbolicExpressionTerm | SymbolicAssignmentTerm > > 表达式操作码返回一个值,并且可在表达式中使用。
> IntegerTypeOpcode := > > > AddTerm | AndTerm | DecTerm | DerefOfTerm | DivideTerm | EISAIDTerm | FindSetLeftBitTerm | FindSetRightBitTerm | FromBCDTerm | IncTerm | LAndTerm | LEqualTerm | LGreaterTerm | LGreaterEqualTerm | LLessTerm | LLessEqualTerm | LNotTerm | LNotEqualTerm | MatchTerm | ModTerm | MultiplyTerm | NAndTerm | NOrTerm | NotTerm | OrTerm | ShiftLeftTerm | ShiftRightTerm | SubtractTerm | ToBCDTerm | ToIntegerTerm | XorTerm | SymbolicExpressionTerm > > 整数操作码是表达式操作码的一个子集,返回一个 Integer 值,并且可在求值为常量的表达式中使用。这些操作码可在 ASL 编译时进行求值。为确保这些操作码将求值为常量,适用以下规则:该项不能具有目标(target)操作数,并且其所有参数必须为 IntegerTypeOpcode、StringTypeOpcode、BufferTypeOpcode、ConstExprTerm、Integer、BufferTerm、Package 或 String。
> StringTypeOpcode := > > > ConcatTerm | DerefOfTerm | FprintfTerm | MidTerm | PrintfTerm | ToDecimalStringTerm | ToHexStringTerm | ToStringTerm > > 字符串类型操作码是表达式操作码的一个子集,返回一个 String 值,并且可在求值为常量的表达式中使用。这些操作码可在 ASL 编译时进行求值。为确保这些操作码将求值为常量,适用以下规则:该项不能具有目标(target)操作数,并且其所有参数必须为 IntegerTypeOpcode、StringTypeOpcode、BufferTypeOpcode、ConstExprTerm、Integer、BufferTerm、Package 或 String。
> BufferTypeOpcode := > > > ConcatTerm | ConcatResTerm | DerefOfTerm | MidTerm | ResourceTemplateTerm | ToBufferTerm | ToPLDTerm | ToUUIDTerm | UnicodeTerm > > Buffer 类型操作码是表达式操作码的一个子集,返回一个 Buffer 值,并且可在求值为常量的表达式中使用。这些操作码可在 ASL 编译时进行求值。为确保这些操作码将求值为常量,适用以下规则:该项不能具有目标(target)操作数,并且其所有参数必须为 IntegerTypeOpcode、StringTypeOpcode、BufferTypeOpcode、ConstExprTerm、Integer、BufferTerm、Package 或 String。
> ReferenceTypeOpcode := > > > RefOfTerm | DerefOfTerm | IndexTerm | IndexSymbolicTerm | UserTermObj > > 引用类型操作码是表达式操作码的一个子集,返回一个 Reference 值,并且可在表达式中使用。它们不能在编译时求值。引用类型还包括 UserTerm,它是一个控制方法调用。