联合DSDT和SSDT进行反编译——减少DSDT和SSDT错误的尝试

本方法需要使用原始的DSDT.aml和SSDT.aml(一般会有很多个)。

下面就是这个方法:

其实就是使用命令联合DSDTSSDT进行反编译(即aml->dsl),使用命令,就有一些可选的操作了。

一、首先,就是下载编译器可以看成是把中文翻译成英文的翻译机,只是它的工作是把编程语言翻译成机器可以听懂的语言。)
DSDT的编程语言的名字叫ASL(ACPI Source Language)。可以到这里下载:https://www.acpica.org 。这里提供了Unix、Windows、Linux版本的编译器,其中Windows提供了可直接运行的编译器,Unix还需要下载下来自己构建,但我的机器上构建不成功,就搜索了网友构建好的了,帖子会提供下载

二、下载好编译器后,我们需要把它放到系统盘下的usr/local/bin目录,这样才能使用。
这个目录是隐藏的你可以在顶部Finder的菜单栏选择前往菜单下最下面的前往文件夹”,在弹出的对话框中输入 /usr/local/bin 或者 /usr/bin就可以打开这个目录了把编译器程序放到里面就行了

三、接下来,介绍要用到的命令
1、cd :这是很多操作系统都支持的命令,其含义是“change directory”,就是改变路径。
使用方法: cd 路径名比如 cd Desktop/ACPI ,就是定位到桌面上的ACPI文件夹。

2、iasl :这是编译命令 使用: iasl 文件名 比如 iasl DSDT.dsl,就是编译DSDT.dsl文件。
2.1 参数1: -e ,这里的e是external的首字母意思是在操作时要包括外部的一些信息,比如把SSDT的信息,加入到DSDT的反编译过程里,对于DSDT,SSDT就是外部信息。
2.2 参数2: -d这里的d是disassemble的首字母,字面意思是拆卸,可以说是反编译。

四、最后是正题,我们要用到的命令的例子

1、 打开Launchpad找到其它”->“终端”,输入以下命令
2、cd Desktop/ACPI 指定到存放DSDT.aml、SSDT.aml文件的目录。
(你的文件路径不一定一定要是这个。)
3、iasl –e SSDT.aml –d DSDT.aml
已经有比这个命令效果更好的命令了具体请看贴子的最后。)

这句命令的操作使用SSDT.aml里的相关信息协助反编译DSDT.amlSSDT后面的星号表示的是任意字符,比如,你的文件夹里有SSDT1.aml、SSDT2.aml、SSDT3.aml、SSDT4.aml ……。很多的SSDT,这样写,程序就会自动找这个文件夹下的所有SSDT,而不需要把所有SSDT的文件名写到命令里。

执行这句命令后一般,就会在这个文件夹下生成一个dsl文件它的错误大大减少了甚至已经没有错误了。以后要修改DSDT,就可以用这个文件修改了,修改好就可以编译成aml使用了。(不建议用软件打开aml文件,编译好后,可以直接测试有没有效果了。)


3.1 这句命令还可以反过来用,即
iasl -e DSDT.aml -d SSDT.aml 已经有比这个命令效果更好的命令了具体请看贴子的最后。)
与前一句命令相比,操作反了过来这句命令是使用DSDT.aml里的相关信息协助反编译SSDT.aml,这样生成的SSDT.dsl,也能减少很多错误,甚至已经都没有错误了。
以下是我使用这个方法的情况。

以上是在OS X的终端进行的操作Windows下需要把编译器和
DSDT.amlSSDT.aml放在同一个文件夹再用cd命令到文件夹就可以执行命令了


另外,在OS X下楼主推荐使用MaciASL编辑修改DSDT。楼主使用的是MaciASL的Rehabman的修改版。会提供下载。

结束语本贴介绍的方法是一种尝试并不适合所有的电脑的DSDT如果你发现这种方法对你的DSDT没有减少错误的效果那就还是按照一般的方法修改DSDT吧

声明在尝试此方法的过程中发生的一切后果由读者自行承担读者有选择是否使用此方法的自由

毕竟楼主不是什么高手不能保证会不会有什么问题

文件下载地址:(iasl是编译器是ACPI 5.0的编译器DSDT Editor等软件用的是ACPI 4.0的编译器MaciASL是编辑DSDT的软件在软件的设置里可以选择编译器的版本。)(楼主在下载地址也更新了Windows版的编译器。ACPI 5.0 编译器 版本 更新到 20140926本。

特别注意
新版本编译器,反编译后,用MaciASL打开,左边的树状目录会显示不全(实际的代码没有少,但树状目录不能显示完整)。
已经更新为 国外大神 Rehabman 的修改版。(文章结尾有链接)

在帖子的第三页的43F、44F、59F有精彩回复大家可以看一下
1、贴子发出后的 第一个进展:iasl -e .aml -d .aml

(感谢 chenkj918 ,这是本贴的第一个进展。)
2、第二个进展: iasl -da .aml
(感谢 zmman 告诉楼主他的新发现。这是目前减少错误最有效的命令之一。)


3、最新发现推荐): iasl -da DSDT.aml SSDT.aml

![联合DSDT和SSDT进行反编译——减少DSDT和SSDT错误的尝试][https://img.maoshu.cc/wp-content/uploads/sinapicv2-backup/1901-ww3-large-005V4vEUjw1enuivub565j30jf0dcgmh.jpg]


重要补充在之前的贴子,楼主忘了介绍 使用命令 编译DSDT/SSDT文件的方法了(即 dsl -> aml ),特此补充:
iasl 文件名
示例: iasl DSDT.dsl 或者
iasl SSDT.dsl 或者
iasl
.dsl
即可由 dsl源文件,生成 aml目标文件。(不建议用软件打开aml文件


或者在用 MaciASL 保存的时候这样选择:(保存类型选择:“ACPI Machine Language Binary”(简称aml),这样就可以把 dsl 编译保存为 aml 了)



 

附件下载

iasl传送阵:http://pan.baidu.com/s/1dD3XMQP

-------------本文结束感谢您的阅读-------------