19.2.6. ASL 基本(终结)项
> AccessAsTerm := > > > AccessAs ( > > AccessType, // AccessTypeKeyword > > AccessAttribute // Nothing | ByteConstExpr | AccessAttribKeyword | ExtendedAccessAttribTerm > > )
> AcquireTerm := > > > Acquire ( > > SyncObject, // SuperName => Mutex > > TimeoutValue // WordConstExpr > > ) => Boolean // True 表示操作超时且未获取到 Mutex
> AddCompoundTerm := > > > Addend1-Result // TermArg => Integer => Target += Addend2 // TermArg => Integer => Integer
> AddSymbolicTerm := > > > Addend1 // TermArg => Integer + Addend2 // TermArg => Integer => Integer
> AddTerm := > > > Add ( > > Addend1, // TermArg => Integer > > Addend2, // TermArg => Integer > > Result // Target > > ) => Integer
> AliasTerm := > > > Alias ( > > SourceObject, // NameString > > AliasObject // NameString > > )
> AndCompoundTerm := > > > Source1-Result // TermArg => Integer => Target > > &= > > Source2 // TermArg => Integer > > => Integer
> AndSymbolicTerm := > > > Source1 // TermArg => Integer > > & > > Source2 // TermArg => Integer > > => Integer
> AndTerm := > > > And ( > > Source1, // TermArg => Integer > > Source2, // TermArg => Integer > > Result // Target > > ) => Integer
> ArgTerm := > > > Arg0 | Arg1 | Arg2 | Arg3 | Arg4 | Arg5 | Arg6
> BankFieldTerm := > > > BankField ( > > RegionName, // NameString => OperationRegion > > BankName, // NameString => FieldUnit > > BankValue, // TermArg => Integer > > AccessType, // AccessTypeKeyword > > LockRule, // LockRuleKeyword > > UpdateRule // UpdateRuleKeyword > > ) {FieldUnitList}
> BreakPointTerm := > > > BreakPoint
> BreakTerm := > > > Break
> BufferTerm := > > > Buffer ( > > BuffSize // Nothing | TermArg => Integer > > ) {StringData | ByteList} => Buffer
> CaseTerm := > > > Case ( > > Value // DataObject > > ) {TermList}
> ConcatResTerm := > > > ConcatenateResTemplate ( > > Source1, // TermArg => Buffer > > Source2, // TermArg => Buffer > > Result // Target > > ) => Buffer
> ConcatTerm := > > > Concatenate ( > > Source1, // TermArg => SuperName > > Source2, // TermArg => SuperName > > Result // Target > > ) => Buffer | String
> ConnectionTerm := > > > Connection ( > > ConnectionResource // NameString | ResourceMacroTerm > > )
> CondRefOfTerm := > > > CondRefOf ( > > Source // NameString | ArgTerm | LocalTerm | DerefOfTerm > > Destination // Target > > ) => Boolean
> ContinueTerm := > > > Continue
> CopyObjectTerm := > > > CopyObject ( > > Source, // TermArg => DataRefObject > > Result, // NameString | LocalTerm | ArgTerm > > ) => DataRefObject
> CreateBitFieldTerm := > > > CreateBitField ( > > SourceBuffer, // TermArg => Buffer > > BitIndex, // TermArg => Integer > > BitFieldName // NameString > > )
> CreateByteFieldTerm := > > > CreateByteField ( > > SourceBuffer, // TermArg => Buffer > > ByteIndex, // TermArg => Integer > > ByteFieldName // NameString > > )
> CreateDWordFieldTerm := > > > CreateDWordField ( > > SourceBuffer, // TermArg => Buffer > > ByteIndex, // TermArg => Integer > > DWordFieldName // NameString > > )
> CreateFieldTerm := > > > CreateField ( > > SourceBuffer, // TermArg => Buffer > > BitIndex, // TermArg => Integer > > NumBits, // TermArg => Integer > > FieldName // NameString > > )
> CreateQWordFieldTerm := > > > CreateQWordField ( > > SourceBuffer, // TermArg => Buffer > > ByteIndex, // TermArg => Integer > > QWordFieldName // NameString > > )
> CreateWordFieldTerm := > > > CreateWordField ( > > SourceBuffer, // TermArg => Buffer > > ByteIndex, // TermArg => Integer > > WordFieldName // NameString > > )
> DataRegionTerm := > > > DataTableRegion ( > > RegionName, // NameString > > SignatureString, // TermArg => String > > OemIDString, // TermArg => String > > OemTableIDString // TermArg => String > > )
> DebugTerm := > > > Debug
> DecSymbolicTerm := > > > Minuend // TermArg => Integer > > -- > > => Integer
> DecTerm := > > > Decrement ( > > Minuend // SuperName > > ) => Integer
> DefaultTerm := > > > Default {TermList}
> DefinitionBlockTerm := | DefinitionBlock ( | AMLFileName, // String | TableSignature, // String | ComplianceRevision, // ByteConst | OEMID, // String | TableID, // String | OEMRevision // DWordConst | ) {TermList}
> DerefOfTerm := | DerefOf ( | Source // NameString | ArgTerm | LocalTerm | RefOfTerm | CondRefOfTerm | // IndexTerm | MethodInvocationTerm | ) => DataRefObject
> DeviceTerm := | Device ( | DeviceName // NameString | ) {TermList}
> DivideCompoundTerm := | Dividend-Result // TermArg => Integer => Target | /= | Divisor // TermArg => Integer | => Integer
> DivideSymbolicTerm := > > > Dividend // TermArg => Integer > > / > > Divisor // TermArg => Integer > > => Integer
> DivideTerm := > > > Divide ( > > Dividend, // TermArg => Integer > > Divisor, // TermArg => Integer > > Remainder, // Target > > Result // Target > > ) => Integer // 返回 Result
> EISAIDTerm := > > > EISAID ( > > EisaIdString // StringData > > ) => DWordConst
> ElseIfTerm := > > > ElseIf ( > > Predicate // TermArg => Integer > > ) {TermList} ElseTerm
> ElseTerm := > > > Else {TermList} | ElseIfTerm | Nothing
> 事件项 := > > > Event ( > > EventName // 名称字符串 > > )
> 外部项 := > > > External ( > > ObjName, // 名称字符串 > > ObjType, // 无 | 对象类型关键字 > > ResultType, // 无 | 参数类型包 > > ParameterTypes // 无 | 参数类型包 > > )
> 致命项 := > > > Fatal ( > > Type, // 字节常量表达式 > > Code, // 双字常量表达式 > > Arg // TermArg => 整数 > > )
> 字段项 := > > > Field ( > > RegionName, // 名称字符串 => OperationRegion > > AccessType, // 访问类型关键字 > > LockRule, // 锁规则关键字 > > UpdateRule // 更新规则关键字 > > ) {FieldUnitList}
> 查找最左置位项 := > > > FindSetLeftBit ( > > Source, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 查找最右置位项 := > > > FindSetRightBit ( > > Source, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> For 项 := > > > For ( > > Initialize, // 无 | TermArg => 计算数据 > > Predicate, // 无 | TermArg => 计算数据 > > Update // 无 | TermArg => 计算数据 > > ) {TermList}
> Fprintf 项 := > > > Fprintf ( > > TermArg, > > String, > > PrintfArgList > > ) => 字符串
> FromBCD 项 := > > > FromBCD ( > > BCDValue, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 函数项 := > > > Function ( > > FunctionName, // 名称字符串 > > ReturnType, // 无 | 参数类型包 > > ParameterTypes // 无 | 参数类型包 > > ) {TermList}
> If 项 := > > > If ( > > Predicate // TermArg => 整数 > > ) {TermList}
> 包含项 := > > > Include ( > > FilePathName // 字符串数据 > > )
> 自增符号项 := > > > Addend // SuperName => 整数 > > ++ > > => 整数
> 自增项 := > > > Increment ( > > Addend // SuperName > > ) => 整数
> 索引字段项 := > > > IndexField ( > > IndexName, // 名称字符串 => FieldUnit > > DataName, // 名称字符串 => FieldUnit > > AccessType, // 访问类型关键字 > > LockRule, // 锁规则关键字 > > UpdateRule // 更新规则关键字 > > ) {FieldUnitList}
> 索引符号项 := > > > Source // TermArg => <字符串 | 缓冲区 | 包项> > > [Index] // TermArg => 整数 > > => 对象引用
> 索引项 := > > > Index ( > > Source, // TermArg => <字符串 | 缓冲区 | 包项> > > Index, // TermArg => 整数 > > Destination // 目标 > > ) => 对象引用
> 逻辑与符号项 := > > > Source1 // TermArg => 整数 > > && > > Source2 // TermArg => 整数 > > => 布尔值
> 逻辑与项 := > > > LAnd ( > > Source1, // TermArg => 整数 > > Source2 // TermArg => 整数 > > ) => 布尔值
> 逻辑等于符号项 := > > > Source1 // TermArg => 计算数据 > > == > > Source2 // TermArg => 计算数据 > > => 布尔值
> 逻辑等于项 := > > > LEqual ( > > Source1, // TermArg => 计算数据 > > Source2 // TermArg => 计算数据 > > ) => 布尔值
> 逻辑大于等于符号项 := > > > Source1 // TermArg => 计算数据 > > >= > > Source2 // TermArg => 计算数据 > > => 布尔值
> 逻辑大于等于项 := > > > LGreaterEqual ( > > Source1, // TermArg => 计算数据 > > Source2 // TermArg => 计算数据 > > ) => 布尔值
> 逻辑大于符号项 := > > > Source1 // TermArg => 计算数据 > > > > > Source2 // TermArg => 计算数据 > > => 布尔值
> 逻辑大于项 := > > > LGreater ( > > Source1, // TermArg => 计算数据 > > Source2 // TermArg => 计算数据 > > ) => 布尔值
> 逻辑小于等于符号项 := > > > Source1 // TermArg => 计算数据 > > <= > > Source2 // TermArg => 计算数据 > > => 布尔值
> 逻辑小于等于项 := > > > LLessEqual ( > > Source1, // TermArg => 计算数据 > > Source2 // TermArg => 计算数据 > > ) => 布尔值
> 逻辑小于符号项 := > > > Source1 // TermArg => 计算数据 > > < > > Source2 // TermArg => 计算数据 > > => 布尔值
> 逻辑小于项 := > > > LLess ( > > Source1, // TermArg => 计算数据 > > Source2 // TermArg => 计算数据 > > ) => 布尔值
> 逻辑不等于项 := > > > LNotEqual ( > > Source1, // TermArg => 计算数据 > > Source2 // TermArg => 计算数据 > > ) => 布尔值
> 逻辑不等于符号项 := > > > Source1 // TermArg => 计算数据 > > != > > Source2 // TermArg => 计算数据 > > => 布尔值
> 逻辑非符号项 := > > > ! > > Source // TermArg => 整数 > > => 布尔值
> 逻辑非项 := > > > LNot ( > > Source, // TermArg => 整数 > > ) => 布尔值
> 逻辑或符号项 := > > > Source1 // TermArg => 整数 > > || > > Source2 // TermArg => 整数 > > => 布尔值
> 加载表项 := > > > LoadTable ( > > SignatureString, // TermArg => 字符串 > > OemIDString, // TermArg => 字符串 > > OemTableIDString, // TermArg => 字符串 > > RootPathString, // 无 | TermArg => 字符串 > > ParameterPathString, // 无 | TermArg => 字符串 > > ParameterData // 无 | TermArg => 数据引用对象 > > ) => 布尔值 // True(非零)表示表已成功加载
> 加载项 := > > > Load ( > > Object, // 名称字符串 > > Result // SuperName => 布尔值 – True(非零) // 表示表已成功加载 > > ) => 布尔值 // True(全 1)表示表已成功加载
> 局部变量项 := > > > Local0 | Local1 | Local2 | Local3 | Local4 | Local5 | Local6 | Local7
> 逻辑或项 := > > > LOr ( > > Source1, // TermArg => 整数 > > Source2 // TermArg => 整数 > > ) => 布尔值
> 匹配项 := > > > Match ( > > SearchPackage, // TermArg => Package > > Op1, // 匹配操作关键字 > > MatchObject1, // TermArg => 计算数据 > > Op2, // 匹配操作关键字 > > MatchObject2, // TermArg => 计算数据 > > StartIndex // TermArg => 整数 > > ) => <全 1 | 整数>
> 方法项 := > > > Method ( > > MethodName, // 名称字符串 > > NumArgs, // 无 | 字节常量表达式 > > SerializeRule, // 无 | 序列化规则关键字 > > SyncLevel, // 无 | 字节常量表达式 > > ReturnType, // 无 | 参数类型包 > > ParameterTypes // 无 | 参数类型包 > > ) {TermList}
> Mid 项 := > > > Mid ( > > Source, // TermArg => <缓冲区 | 字符串> > > Index, // TermArg => 整数 > > Length, // TermArg => 整数 > > Result // 目标 > > ) => <缓冲区 | 字符串>
> 取模复合项 := > > > Dividend-Result // TermArg => 整数 => 目标 > > %= > > Divisor // TermArg => 整数 > > => 整数
> 取模符号项 := > > > Dividend // TermArg => 整数 > > % > > Divisor // TermArg => 整数 > > => 整数
> 取模项 := > > > Mod ( > > Dividend, // TermArg => 整数 > > Divisor, // TermArg => 整数 > > Result // 目标 > > ) => 整数 // 返回 Result
> 乘法复合项 := > > > Multiplicand-Result // TermArg => 整数 => 目标 > > *= > > Multiplier // TermArg => 整数 > > => 整数
> 乘法符号项 := > > > Multiplicand // TermArg => 整数 > > * > > Multiplier // TermArg => 整数 > > => 整数
> 乘法项 := > > > Multiply ( > > Multiplicand, // TermArg => 整数 > > Multiplier, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 互斥体项 := > > > Mutex ( > > MutexName, // 名称字符串 > > SyncLevel // 字节常量表达式 > > )
> 名称项 := > > > Name ( > > ObjectName, // 名称字符串 > > Object // 数据对象 > > )
> 与非项 := > > > NAnd ( > > Source1, // TermArg => 整数 > > Source2, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 空操作项 := > > > NoOp
> 或非项 := > > > NOr ( > > Source1, // TermArg => 整数 > > Source2, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 通知项 := > > > Notify ( > > Object, // SuperName => <热区 | 处理器 | 设备> > > NotificationValue // TermArg => 整数 > > )
> 按位非符号项 := > > > ~ > > Source // TermArg => 整数 > > => 整数
> 按位非项 := > > > Not ( > > Source, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 对象类型项 := > > > ObjectType ( > > Object // 名称字符串 | ArgTerm | LocalTerm | DebugTerm | > > // RefOfTerm | DerefOfTerm | IndexTerm > > ) => 整数
> 偏移项 := > > > Offset ( > > ByteOffset // 整数数据 > > )
> 操作区域项 := > > > OperationRegion ( > > RegionName, // 名称字符串 > > RegionSpace, // 区域空间关键字 > > Offset, // TermArg => 整数 > > Length // TermArg => 整数 > > )
> 或复合项 := > > > Source1-Result // TermArg => 整数 => 目标 > > |= > > Source2 // TermArg => 整数 > > => 整数
> 或符号项 := > > > Source1 // TermArg => 整数 > > | > > Source2 // TermArg => 整数 > > => 整数
> 或项 := > > > Or ( > > Source1, // TermArg => 整数 > > Source2, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 包项 := > > > Package ( > > NumElements // 无 | 字节常量表达式 | TermArg => 整数 > > ) {PackageList} => Package
> PLD 关键字 := > > > PLD_Revision | PLD_IgnoreColor | PLD_Red | PLD_Green | PLD_Blue | PLD_Width | PLD_Height | PLD_UserVisible | PLD_Dock | PLD_Lid | PLD_Panel | PLD_VerticalPosition | PLD_HorizontalPosition | PLD_Shape | PLD_GroupOrientation | PLD_GroupToken | PLD_GroupPosition | PLD_Bay PLD_Ejectable | PLD_EjectRequired | PLD_CabinetNumber
> PLD 关键字列表 := > > > PLDKeyword = StringDataPLD_Revision | PLDKeyword = IntegerDataPLD_Revision | PLDKeyword = StringDataPLD_Revision, PLDKeywordListPLD_Revision, PLDKeyword = IntegerDataPLD_Revision, PLDKeywordListPLD_Revision
> 电源资源项 := > > > PowerResource ( > > ResourceName, // 名称字符串 > > SystemLevel, // 字节常量表达式 > > ResourceOrder // 字常量表达式 > > ) {TermList}
> Printf 参数列表 := > > > TermArg | TermArg , PrintfArgList
> Printf 项 := > > > Printf ( > > String, > > PrintfArgList > > ) => 字符串
> 处理器项 := > > > Processor ( > > ProcessorName, // 名称字符串 > > ProcessorID, // 字节常量表达式 > > PBlockAddress, // 双字常量表达式 | 无 (=0) > > PblockLength // 字节常量表达式 | 无 (=0) > > ) {TermList}
> 原始数据缓冲区项 := > > > RawDataBuffer ( > > BuffSize // 无 | 字常量 > > ) { ByteList} => RawDataBuffer
> 引用项 := > > > RefOf ( > > Source // 名称字符串 | ArgTerm | LocalTerm | DerefOfTerm > > ) => 对象引用
> 释放项 := > > > Release ( > > SyncObject // SuperName > > )
> 重置项 := > > > Reset ( > > SyncObject // SuperName > > )
> 返回项 := > > > Return ( > > Arg // 无 | TermArg => 数据引用对象 > > )
> 作用域项 := > > > Scope ( > > Location // 名称字符串 > > ) {TermList}
> 左移复合项 := > > > Source-Result // TermArg => 整数 => 目标 > > <<= > > ShiftCount // TermArg => 整数 > > => 整数
> 左移符号项 := > > > Source // TermArg => 整数 > > << > > ShiftCount // TermArg => 整数 > > => 整数
> 左移项 := > > > ShiftLeft ( > > Source, // TermArg => 整数 > > ShiftCount, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 右移复合项 := > > > Source-Result // TermArg => 整数 => 目标 > > >>= > > ShiftCount // TermArg => 整数 > > => 整数
> 右移符号项 := > > > Source // TermArg => 整数 > > >> > > ShiftCount // TermArg => 整数 > > => 整数
> 右移项 := > > > ShiftRight ( > > Source, // TermArg => 整数 > > ShiftCount, // TermArg => 整数 > > Result // 目标 > > ) => 整数
> 发信号项 := > > > Signal ( > > SyncObject // SuperName > > )
> 求大小项 := > > > SizeOf ( > > DataObject // SuperName => <字符串 | 缓冲区 | 包> > > ) => 整数
> 睡眠项 := > > > Sleep ( > > MilliSeconds // TermArg => 整数 > > )
> 停顿项 := > > > Stall ( > > MicroSeconds // TermArg => 整数 > > )
> 存储符号项 := > > > Destination // SuperName > > = > > Source // TermArg => 数据引用对象 > > => 数据引用对象
> 存储项 := > > > Store ( > > Source, // TermArg => 数据引用对象 > > Destination // SuperName > > ) => 数据引用对象
> 减法复合项 := > > > Minuend-Result // TermArg => 整数 => 目标 > > -= > > Subtrahend // TermArg => 整数 > > => 整数
> 减法符号项 := > > > Minuend // TermArg => 整数 > > - > > Subtrahend // TermArg => 整数 > > => 整数
> 减法项 := > > > Subtract ( > > 被减数, // TermArg => Integer > > 减数, // TermArg => Integer > > 结果 // Target > > ) => Integer
> Switch项 := > > > Switch ( > > 谓词 // TermArg => ComputationalData > > ) {CaseTermList}
> ThermalZone项 := > > > ThermalZone ( > > ThermalZone名称 // NameString > > ) {TermList}
> Timer项 := > > > Timer => Integer
> ToBCD项 := > > > ToBCD ( > > 值, // TermArg => Integer > > 结果 // Target > > ) => Integer
> ToBuffer项 := > > > ToBuffer ( > > 数据, // TermArg => ComputationalData > > 结果 // Target > > ) => ComputationalData
> ToDecimalString项 := > > > ToDecimalString ( > > 数据, // TermArg => ComputationalData > > 结果 // Target > > ) => String