ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 19 章

    • 总览
    • 19.1. ASL 2.0 符号运算符和表达式
    • 19.2. ASL 语言语法
      • 19.2.1. ASL 语法表示法
      • 19.2.2. ASL 名称和路径名项
      • 19.2.3. ASL 根项和次级项
      • 19.2.4. ASL 数据和常量项
      • 19.2.5. ASL 操作码项
      • 19.2.6. ASL 基本(终结)项
        • 19.2.6. ASL 基本(终结)项
        • 19.2.6. ASL 基本(终结)项(续 2)
      • 19.2.7. ASL 参数关键字项
      • 19.2.8. ASL 资源模板项
    • 19.3. ASL 概念
      • 19.3.1. ASL 名称
      • 19.3.2. ASL 字面常量
      • 19.3.3. ASL 资源模板
      • 19.3.4. ASL 宏
      • 19.3.5. ASL 数据类型
    • 19.4. ASL 运算符摘要
    • 19.5. 按类型划分的 ASL 操作符摘要
    • 19.6. ASL 运算符参考
      • 19.6.1. AccessAs(更改字段单元访问)
      • 19.6.2. Acquire(获取互斥量)
      • 19.6.3. Add(整数加法)
      • 19.6.4. Alias(声明名称别名)
      • 19.6.5. And(整数按位与)
      • 19.6.6. Argx(方法参数数据对象)
      • 19.6.7. BankField(声明 Bank/Data 字段)
      • 19.6.8. Break(从 While 中中断)
      • 19.6.9. BreakPoint(执行断点)
      • 19.6.10. Buffer(声明缓冲区对象)
      • 19.6.11. Case(用于条件执行的情况表达式)
      • 19.6.12. Concatenate(连接数据)
      • 19.6.13. ConcatenateResTemplate(连接资源模板)
      • 19.6.14. CondRefOf(有条件地创建对象引用)
      • 19.6.15. Connection(声明字段连接属性)
      • 19.6.16. Continue(继续最内层外围 While)
      • 19.6.17. CopyObject(复制并存储对象)
      • 19.6.18. CreateBitField(创建 1 位缓冲区字段)
      • 19.6.19. CreateByteField(创建 8 位缓冲区字段)
      • 19.6.20. CreateDWordField(创建 32 位缓冲区字段)
      • 19.6.21. CreateField(创建任意长度缓冲区字段)
      • 19.6.22. CreateQWordField(创建 64 位缓冲区字段)
      • 19.6.23. CreateWordField(创建 16 位缓冲区字段)
      • 19.6.24. CSI2Bus(CSI-2 串行总线连接资源描述符宏)
      • 19.6.25. DataTableRegion(创建数据表操作区域)
      • 19.6.26. Debug(调试器输出)
      • 19.6.27. Decrement(整数递减)
      • 19.6.28. Default(Switch 中的默认执行路径)
      • 19.6.29. DefinitionBlock(声明定义块)
      • 19.6.30. DerefOf(解引用对象引用)
      • 19.6.31. Device(声明设备包)
      • 19.6.32. Divide(整数除法)
      • 19.6.33. DMA(DMA 资源描述符宏)
      • 19.6.34. DWordIO(DWord I/O 资源描述符宏)
      • 19.6.35. DWordMemory(DWord 内存资源描述符宏)
      • 19.6.36. DWordSpace(DWord 空间资源描述符宏)
      • 19.6.37. EISAID(EISA ID 字符串到整数转换宏)
      • 19.6.38. Else(替代执行)
      • 19.6.39. ElseIf(替代/条件执行)
      • 19.6.40. EndDependentFn(结束依赖功能资源描述符宏)
      • 19.6.41. Event(声明事件同步对象)
      • 19.6.42. ExtendedIO(扩展 IO 资源描述符宏)
      • 19.6.43. ExtendedMemory(扩展 Memory 资源描述符宏)
      • 19.6.44. ExtendedSpace(扩展地址空间资源描述符宏)
      • 19.6.45. External(声明外部对象)
      • 19.6.46. Fatal(致命错误检查)
      • 19.6.47. Field(声明字段对象)
      • 19.6.48. 查找最左侧置位位
      • 19.6.49. 查找最右侧置位位
      • 19.6.50. FixedDMA(DMA 资源描述符宏)
      • 19.6.51. FixedIO(固定 IO 资源描述符宏)
      • 19.6.52. For(条件循环)
      • 19.6.53. Fprintf(创建并存储格式化字符串)
      • 19.6.54. FromBCD(将 BCD 转换为 Integer)
      • 19.6.55. Function(声明控制方法)
      • 19.6.56. GpioInt(GPIO 中断连接资源描述符宏)
      • 19.6.57. GpioIo(GPIO 连接 IO 资源描述符宏)
      • 19.6.58. I2CSerialBusV2(I2C 串行总线连接资源描述符(版本 2)宏)
      • 19.6.59. If(条件执行)
      • 19.6.60. Include(包含附加 ASL 文件)
      • 19.6.61. Increment(整数递增)
      • 19.6.62. Index(成员对象的索引引用)
      • 19.6.63. IndexField(声明索引/数据字段)
      • 19.6.64. Interrupt(中断资源描述符宏)
      • 19.6.65. IO(IO 资源描述符宏)
      • 19.6.66. IRQ(中断资源描述符宏)
      • 19.6.67. IRQNoFlags(中断资源描述符宏)
      • 19.6.68. LAnd(逻辑与)
      • 19.6.69. LEqual(逻辑等于)
      • 19.6.70. LGreater(逻辑大于)
      • 19.6.71. LGreaterEqual(逻辑大于或等于)
      • 19.6.72. LLess(逻辑小于)
      • 19.6.73. LLessEqual(逻辑小于或等于)
      • 19.6.74. LNot(逻辑非)
      • 19.6.75. LNotEqual(逻辑不等于)
      • 19.6.76. Load(加载定义块)
      • 19.6.77. LoadTable(从 XSDT 加载定义块)
      • 19.6.78. Localx(方法局部数据对象)
      • 19.6.79. LOr(逻辑或)
      • 19.6.80. Match(查找对象匹配)
      • 19.6.81. Memory24(内存资源描述符宏)
      • 19.6.82. Memory32(内存资源描述符宏)
      • 19.6.83. Memory32Fixed(内存资源描述符宏)
      • 19.6.84. Method(声明控制方法)
      • 19.6.85. Mid(提取 Buffer 或 String 的一部分)
      • 19.6.86. Mod(整数取模)
      • 19.6.87. Multiply(整数乘法)
      • 19.6.88. Mutex(声明同步/互斥对象)
      • 19.6.89. Name(声明命名对象)
      • 19.6.90. NAnd(整数按位 NAND)
      • 19.6.91. NoOp Code(空操作)
      • 19.6.92. NOr(整数按位 NOR)
      • 19.6.93. Not(整数按位取反)
      • 19.6.94. Notify(通知对象发生事件)
      • 19.6.95. Offset(更改当前字段单元偏移)
      • 19.6.96. ObjectType(获取对象类型)
      • 19.6.97. One(常量值为一的整数)
      • 19.6.98. Ones(全 1 常量整数)
      • 19.6.99. OperationRegion(声明操作区域)
      • 19.6.100. Or(整数按位或)
      • 19.6.101. Package(声明 Package 对象)
      • 19.6.102. PinConfig(引脚配置描述符宏)
      • 19.6.103. PinFunction(引脚功能描述符宏)
      • 19.6.104. PinGroup(引脚组描述符宏)
      • 19.6.105. PinGroupConfig(引脚组配置描述符宏)
      • 19.6.106. PinGroupFunction(引脚组功能配置描述符宏)
      • 19.6.107. PowerResource(声明电源资源)
      • 19.6.108. Printf(创建并存储格式化字符串)
      • 19.6.109. QWordIO(QWord IO 资源描述符宏)
      • 19.6.110. QWordMemory(QWord Memory 资源描述符宏)
      • 19.6.111. QWordSpace(QWord 空间资源描述符宏)
      • 19.6.112. RawDataBuffer(原始数据缓冲区)
      • 19.6.113. RefOf(创建对象引用)
      • 19.6.114. Register(通用寄存器资源描述符宏)
      • 19.6.115. Release(释放 Mutex 同步对象)
      • 19.6.116. Reset(重置 Event 同步对象)
      • 19.6.117. ResourceTemplate(资源到缓冲区转换宏)
      • 19.6.118. Return(从方法执行中返回)
      • 19.6.119. Revision(常量修订整数)
      • 19.6.120. Scope(打开命名作用域)
      • 19.6.121. ShiftLeft(整数左移)
      • 19.6.122. ShiftRight(整数右移)
      • 19.6.123. Signal(发出同步 Event 信号)
      • 19.6.124. SizeOf(获取数据对象大小)
      • 19.6.125. Sleep(毫秒休眠)
      • 19.6.126. SPISerialBusV2(SPI 串行总线连接资源描述符(版本 2)宏)
      • 19.6.127. Stall(短时间停顿)
      • 19.6.128. StartDependentFn(起始依赖函数资源描述符宏)
      • 19.6.129. StartDependentFnNoPri(起始依赖函数资源描述符宏)
      • 19.6.130. Store(存储对象)
      • 19.6.131. Subtract(整数减法)
      • 19.6.132. Switch(根据表达式选择要执行的代码)
      • 19.6.133. ThermalZone(声明热区)
      • 19.6.134. 定时器(获取 64 位定时器值)
      • 19.6.135. ToBCD(将整数转换为 BCD)
      • 19.6.136. ToBuffer(将数据转换为 Buffer)
      • 19.6.137. ToDecimalString(将数据转换为十进制字符串)
      • 19.6.138. ToHexString(将数据转换为十六进制字符串)
      • 19.6.139. ToInteger(将数据转换为整数)
      • 19.6.140. ToPLD(创建 _PLD Buffer 对象)
      • 19.6.141. ToString(将 Buffer 转换为 String)
      • 19.6.142. ToUUID(将字符串转换为 UUID 宏)
      • 19.6.143. UARTSerialBusV2(UART 串行总线连接资源描述符版本 2 宏)
      • 19.6.144. Unicode(字符串到 Unicode 转换宏)
      • 19.6.145. VendorLong(长厂商资源描述符)
      • 19.6.146. VendorShort(短厂商资源描述符)
      • 19.6.147. Wait(等待同步事件)
      • 19.6.148. While(条件循环)
      • 19.6.149. WordBusNumber(Word 总线编号资源描述符宏)
      • 19.6.150. WordIO(Word IO 资源描述符宏)
      • 19.6.151. WordSpace(Word Space 资源描述符宏)
      • 19.6.152. XOr(整数按位异或)
      • 19.6.153. Zero(常量零整数)

19.5. 按类型划分的 ASL 操作符摘要

表 19.16 ASL 编译器控制

操作符名称描述
External声明外部对象
Include包含另一个 ASL 文件

表 19.17 ACPI 表管理

操作符名称描述
DefinitionBlock声明一个定义块
LoadTable从 RSDT/XSDT 加载表
Load加载可区分的定义块

表 19.18 杂项命名对象创建

操作符名称描述
Alias定义一个名称别名
Buffer声明 Buffer 对象
Device声明一个总线/设备对象
Function声明一个控制方法
Method声明一个控制方法
Name声明一个命名对象
Package声明一个包对象
PowerResource声明一个电源资源对象
Processor声明一个处理器包
RawDataBuffer声明一个 RawDataBuffer
Scope打开命名作用域
ThermalZone声明一个热区包

表 19.19 操作区域和字段

操作符名称描述
AccessAs更改字段访问方式
BankField在分银行配置对象中声明字段
Connection声明字段连接属性
DataTableRegion声明一个数据表区域
Field声明操作区域对象的字段
IndexField声明索引/数据字段
Offset在操作区域内设置字段偏移
OperationRegion声明一个操作区域

表 19.20 缓冲区字段

操作符名称描述
CreateBitField声明缓冲区对象的位字段对象
CreateByteField声明缓冲区对象的字节字段对象
CreateDWordField声明缓冲区对象的 DWord 字段对象
CreateField声明缓冲区对象的任意长度位字段
CreateQWordField声明缓冲区对象的 QWord 字段对象
CreateWordField声明缓冲区对象的 Word 字段对象

表 19.21 同步

操作符名称描述
Acquire获取一个互斥锁
Event声明一个事件同步对象
Mutex声明一个互斥同步对象
Notify通知对象发生事件
Release释放一个同步对象
Reset重置一个同步对象
Signal发信号通知一个同步对象
Wait在事件上等待

表 19.22 对象引用

操作符名称描述
CondRefOf对对象的条件引用
DerefOf解引用对象引用
RefOf创建对对象的引用

表 19.23 整数算术

操作符名称描述
Add整数加法
And整数按位与
Decrement整数递减
Divide整数除法
FindSetLeftBit第一个置位的最高有效位的索引
FindSetRightBit第一个置位的最低有效位的索引
Increment整数递增
Mod整数取模
Multiply整数乘法
NAnd整数按位与非
NOr整数按位或非
Not整数按位非
Or整数按位或
ShiftLeft整数左移值
ShiftRight整数右移值
Subtract整数减法
Xor整数按位异或

表 19.24 逻辑操作符

操作符名称描述
LAnd逻辑与
LEqual逻辑相等
LGreater逻辑大于
LGreaterEqual逻辑不小于
LLess逻辑小于
LLessEqual逻辑不大于
LNot逻辑非
LNotEqual逻辑不等
LOr逻辑或

表 19.25 方法执行控制

操作符名称描述
Break继续执行最内层封闭 While 之后的语句
BreakPoint用于调试,在调试器中停止执行
Case用于条件执行的表达式
Continue继续最内层封闭 While 循环
DefaultSwitch() 中的默认执行路径
Else替代条件执行
ElseIf条件执行
Fatal致命错误检查
If条件执行
NoOp无操作
Return从方法执行中返回
Sleep以毫秒为单位休眠(让出处理器)
Stall以微秒为单位延迟(不让出处理器)
Switch根据表达式值选择要执行的代码
While条件循环

表 19.26 数据类型转换和操作

操作符名称描述
Concatenate连接两个字符串、整数或缓冲区
CopyObject复制一个现有对象
Debug调试器输出
EisaIdEISA ID 字符串到整数的转换宏
Fprintf将格式化字符串存储到一个命名对象
FromBCD从 BCD 转换为数值
Index对成员对象的索引引用
Match在包数组中搜索匹配项
Mid返回缓冲区或字符串的一部分
ObjectType对象的类型
Printf将格式化字符串存储到 Debug 对象
SizeOf获取缓冲区、字符串或包的大小
Store存储对象
Timer获取 64 位定时器值
ToBCD将整数转换为 BCD
ToBuffer将数据类型转换为缓冲区
ToDecimalString将数据类型转换为十进制字符串
ToHexString将数据类型转换为十六进制字符串
ToInteger将数据类型转换为整数
ToPLD将 PLD 关键字列表转换为 _PLD 缓冲区
ToString从缓冲区复制 ASCII 字符串
ToUUID将 ASCII 字符串转换为 UUID
Unicode字符串到 Unicode 的转换宏

表 19.27 资源描述符宏

运算符名称说明
ConcatenateResTemplate连接两个资源模板
DMADMA 资源描述符宏
DWordIODWord I/O 资源描述符宏
DWordMemoryDWord 内存资源描述符宏
DWordSpaceDWord 空间资源描述符宏
EndDependentFn结束从属功能资源描述符宏
ExtendedIO扩展 I/O 资源描述符宏
ExtendedMemory扩展内存资源描述符宏
ExtendedSpace扩展空间资源描述符宏
FixedDMA固定 DMA 资源描述符宏
FixedIO固定 I/O 资源描述符宏
GpioIntGPIO 中断连接资源描述符宏
GpioIOGPIO I/O 连接资源描述符宏
I2CSerialBusV2I2C 串行总线连接资源描述符(版本 2)宏
Interrupt中断资源描述符宏
IOI/O 资源描述符宏
IRQ中断资源描述符宏
IRQNoFlags短中断资源描述符宏
Memory24内存资源描述符宏
Memory32内存资源描述符宏
Memory32Fixed内存资源描述符宏
QWordIOQWord I/O 资源描述符宏
QWordMemoryQWord 内存资源描述符宏
QWordSpaceQWord 空间资源描述符宏
Register通用寄存器资源描述符宏
ResourceTemplate资源到缓冲区转换宏
SPISerialBusV2SPI 串行总线连接资源描述符(版本 2)宏
StartDependentFn StartDependentFnNoPri起始从属功能资源描述符宏
UARTSerialBusV2UART 串行总线连接资源描述符(版本 2)宏
VendorLong厂商资源描述符
VendorShort厂商资源描述符
WordBusNumberWord 总线编号资源描述符宏
WordIOWord I/O 资源描述符宏
WordSpaceWord 空间资源描述符宏

表 19.28 常量

运算符名称说明
One常量 One 对象(1)
Ones常量 Ones 对象(-1)
Revision常量修订版本对象
Zero常量 Zero 对象(0)

表 19.29 控制方法对象

运算符名称说明
ArgX方法参数数据对象
LocalX方法局部数据对象
Prev
19.4. ASL 运算符摘要
Next
19.6. ASL 运算符参考