返回列表 发帖

ACPI中ASL的简单介绍(1)

本帖最后由 accessory 于 2010-11-23 06:40 编辑

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,C++,JAVA,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.

讲得很好,呵呵

TOP

多谢支持
完全新手,没有经验. 所有的帖子都是个人意见. 难免不对,见谅,见谅.

☑有房(租的)☑有车(旧的)☑有钱(不到5位数)☑有相貌(普通的)

☑没培训☑没高人☑没代码☑没文档☑没仪器

TOP

要不lz出个关于ACPI的系列吧

TOP

studying, thanks

TOP

说的很好!支持下

TOP

http://bbs.gter.net/bbs/thread-1093610-1-1.html
里面的DriverEntry是lz?
还是转载未标明?

TOP

回复 7# bioshill

前者。

我准备再学习下AML,希望能再写个小结。
完全新手,没有经验. 所有的帖子都是个人意见. 难免不对,见谅,见谅.

☑有房(租的)☑有车(旧的)☑有钱(不到5位数)☑有相貌(普通的)

☑没培训☑没高人☑没代码☑没文档☑没仪器

TOP

支持,加油!

TOP

谢谢楼主啊。这里知道对新人很有帮助,期待楼主的新作。

TOP

不好意思,突然发现暂时不用看AML了。估计短期内不会写关于AML的东西了。

欢迎大家也把自己的学习体会记录下来。其实写出来后,也可以防止自己以后忘记。这种东西过一阵不搞就容易忘记。
完全新手,没有经验. 所有的帖子都是个人意见. 难免不对,见谅,见谅.

☑有房(租的)☑有车(旧的)☑有钱(不到5位数)☑有相貌(普通的)

☑没培训☑没高人☑没代码☑没文档☑没仪器

TOP

推  正好要學習ASL CODE

TOP

学习了,谢谢LZ的共享!

TOP

支持    lz

TOP

路过,支持ing

TOP

mark 起来有时间好好看

TOP

其实ACPI 的SPEC 里面讲的很详细,可是英文不是太好看了4,5遍才大致有些了解,楼主能出中文版的太强大了。哈哈

TOP

学习了,终于明白为什么要那么写了

TOP

通俗易懂,比看spec容易多了。支持4楼的想法。
静默

TOP

还好以前看的时候写了下来,现在再看一遍一楼,发现很多东西都不记得鸟...  = =

如果我接着弄ACPI,就会再写点的.赫赫.
完全新手,没有经验. 所有的帖子都是个人意见. 难免不对,见谅,见谅.

☑有房(租的)☑有车(旧的)☑有钱(不到5位数)☑有相貌(普通的)

☑没培训☑没高人☑没代码☑没文档☑没仪器

TOP

返回列表