ACPI中ASL的简单介绍

ACPI中ASL的简单介绍,第1张

概述来自:http://www.biosren.com/thread-2500-1-2.html ACPI中ASL的简单介绍 ACPI(Advanced Configuration and Power Interface)中,一个特色是有自己专门的一个语言来编写ACPI的那些表。这个语言叫做:ASL(ACPI Source Language). ASL在经过编译器编译后,变成AML(ACPI Mach

来自:http://www.biosren.com/thread-2500-1-2.html

ACPI中ASL的简单介绍

ACPI(Advanced Configuration and Power Interface)中,一个特色是有自己专门的一个语言来编写ACPI的那些表。这个语言叫做:ASL(ACPI Source Language). ASL在经过编译器编译后,变成AML(ACPI Machine Language)。然后由OSPM(一般也就是OS)来执行。

AML是一种BYTECODE,类似JAVA BYTECODE。也就是说,他并不是直接在机器上执行的2进制代码,而是需要OS来解释后执行。这样做的好处是方便错误检查,减少由于代码没写好而带来的负面影响。

本文主要介绍下ASL,并把他和其他常见的编程语言,比如C,C++,JAVA,PERL之类的进行对比。适合初学者。另外,作者本人也是刚刚学ACPI,ASL,所以文中也许有不对的地方,欢迎大家指正。

在学ASL之前,我也学过一些编程语言,比如C,PERL之类。所以在开始学ASL的时候,有意无意的同这些以前学的语言进行比较。慢慢的,我发现ASL同前面提的这些语言差别还是很大的。下面简要介绍下ASL的特性和差别。


1、ACPI nameSPACE与一般的常量,变量的区别。
一般的编程语言中 *** 作的是常量和变量。这些变量之间一般没啥关系,可以说是一堆平行(有序或者随机排列的)的内存地址而已。而在ACPI中,这个发生了明显变化。ACPI引入了一个nameSPACE的观念。也就是说所有的OBJECT之间是有等级关系的。类似一个文件或者注册表系统,各个ACPI OBJECT(类似常量)之间都存在于一个路径下面,其中的根目录就是以符号“\"来表示。然后上下级目录之间用“.”来连接起来。

比如\_SB_. FOO.bar 就表示根目录下的_SB_这个OBJECT下的FOO OBJECT下的bar OBJECT.

因此,在ACPI中,很多 *** 作都是作用在这个name SPACE 中的某个OBJECT上面。并由此引入了一系列相关概念。比如ScopE。

为什么要这样设计呢?因为ACPI本身是一个针对性很强的规范,就是电源管理。因此把这些常用的OBJECT排列好,分类好。处理起来也方便。灵活性比一般的编程语言差了,但是简单,并且能满足设计要求。


2、ASL中有大量的OPERATOR( *** 作符)。
基本上看一段ASL代码,其中 *** 作符占掉了大部分。比如ASL中很多都是如下形式:Device(PCI0)。一般在小括号前面的都是 *** 作符,也就是预先定义好的。这也是因为ASL本身的目的就很简单,所以很多东西可以先定好。 参考资料: ACPI SPEC 4.0,CHAPTER 5,18.

总结

以上是内存溢出为你收集整理的ACPI中ASL的简单介绍全部内容,希望文章能够帮你解决ACPI中ASL的简单介绍所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1286773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存