kavenliang 发表于 2014-2-8 19:47

貌似ssdt加了星号就找不到文档

daxuexinsheng 发表于 2014-2-8 19:51

kavenliang 发表于 2014-2-8 19:47 static/image/common/back.gif
貌似ssdt加了星号就找不到文档

哦,星号是表示匹配任意字符呢,如果ssdt的名字是ssdt.aml,ssdt的后面没有其它字符的话可能就找不到。
另外还有就是,这个方法也不适合所有电脑的dsdt和ssdt,楼主也遇到过提示无法完成操作的提示呢。

zmmwan 发表于 2014-2-9 01:16

{:5_285:}对于反复编译出错的 dsdt,我们基本已经可以肯定是由于反编译过程的 bug 产生。理由如下:
一、dsl 在编写的过程一些特别明显的错误是不可能犯的,更不可能好多厂商的程序员同时犯相同的错误,所以 dsl 在编写过程中出现那么离奇的错误基本是不可能的。
二、编译后的二进制文件是没有错的,不然也无法通过机器执行,所以编译过程是不会产生这么严重的错误的。
三、在一和二成立的前提下,我们再次看到源码是在反编译过程后,那么错误是在反编译过程中产生的。
我没看过反编译器的源码,但我猜测(也有别的可能),在反编译时,反编译器会对于 dsdt(或者是 ssdt) 内的各类变量进行检测,对于函数所使用的参数的个数也会确定,这时对于 dsdt 里写了的,基本不会出现检测错误,但是对于 dsdt 前面声明的External 里的各类变量(如:External (PDC5),下面以此为例),因为反编译器不知道PDC5是什么变量(可能是整数变量,也可能是函数等等),反编译器就会猜测其类型,如果反编译器把原本是整数的 PDC5猜成了函数,那下面必然会给 PDC5使用调用程式(PDC5()),那下面就有可能会产生接二连三的符号错误……符号错误最明显的影响是导致一大堆的参数找不到。其它的各种错就不一一列举了……(实为本人能力有限)
四、楼主指明的方法正好可以帮助反编译器解决上面说的这个问题(好多 External 里声明的就是 ssdt 里的变量 ),所以按楼主的方法反编译出的 dsl 文件基本没有错误,这也可以反过来证明三中猜想的正确性。

贴上一段我使用楼主所给方法反编译微星 ge60的 dsdt 时 dsl 给出的提示/*
   * iASL Warning: There were 8 external control methods found during
   * disassembly, but only 7 were resolved (1 unresolved). Additional
   * ACPI tables are required to properly disassemble the code. This
   * resulting disassembler output file may not compile because the
   * disassembler did not know how many arguments to assign to the
   * unresolved methods.
   */
    External (_SB_.TPM_.PTS_, MethodObj)    // Warning: Unresolved Method, guessing 1 arguments (may be incorrect, see warning above)
解决办法:
如果三中猜想正确,那么,问题的产生过程也就明确了,解决方法就有两个(欢迎提供更好的解决办法):
1.修复反编译器的 bug……;
2.把会识别错的变量写到 dsdt 里去。

显然2比较实际一点。我实际测试也是2可以基本解决这个问题。这个解决方法也可以用来证明三中猜想正确。



深夜写天书,逻辑比较混乱……但愿有人能看懂……

                               ……声明……
本人日语专业,未学过编程,所以有些专业术语不会使用,也有可能有些地方说的不对,还请各位看客多多包涵,如果能帮助小弟改正,更是感激不尽。

chenkj918 发表于 2014-2-9 06:43

本帖最后由 kavenliang 于 2014-10-8 08:45 编辑

我之前的问题是因为iasl版本太老 记得换新版本, 还有一个万能命令 ./iasl -e *.aml -d *.aml 会把所有的aml都dissemble一遍 非常方便

daxuexinsheng 发表于 2014-2-9 08:56

zmmwan 发表于 2014-2-9 01:16 static/image/common/back.gif
对于反复编译出错的 dsdt,我们基本已经可以肯定是由于反编译过程的 bug 产生。理由如下:
一、d ...

感谢您提供的看法,遗憾写帖子时没有留备用楼,就不能把您的看法写到第一页了,我感到万分抱歉,我会在主楼指出43F有精彩回复的。再次感谢您的宝贵看法。
另外,就我现有的对ASL编程语言的认识,External语句的作用应该就是,声明这个对象(obj,即object),在开机运行代码时,需要到本文件的外部查找。
您的水平很高,以后还要想你多多学习呢。
{:5_293:}

龙心梦飞 发表于 2014-2-9 10:40

用常规方法编译有显卡代码的ssdt错误一堆无法修复,楼主这是个好方法{:5_591:}

daxuexinsheng 发表于 2014-2-9 10:43

龙心梦飞 发表于 2014-2-9 10:40 static/image/common/back.gif
用常规方法编译有显卡代码的ssdt错误一堆无法修复,楼主这是个好方法
嗯,这也是发帖的原因之一呢。

2689255884 发表于 2014-2-10 14:03

zmmwan 发表于 2014-2-9 01:16 static/image/common/back.gif
对于反复编译出错的 dsdt,我们基本已经可以肯定是由于反编译过程的 bug 产生。理由如下:
一、d ...

本人日语专业那你就应该把这些全部用日语打出来啊...哈哈

zmmwan 发表于 2014-2-10 16:45

2689255884 发表于 2014-2-10 14:03 static/image/common/back.gif
那你就应该把这些全部用日语打出来啊...哈哈

{:5_271:}日语 没学好

xiao201261 发表于 2014-2-12 14:46

daxuexinsheng 发表于 2014-2-8 15:49 static/image/common/back.gif
帖子更新了呢,DSDT和SSDT可以互相作为外部扩展呢。
甚至所有有联系的ACPI表都可以互做扩展,当然,要建 ...

所以ssdt使用前必须先使用dsdt,不然无法加载ssdt

daxuexinsheng 发表于 2014-2-12 14:51

xiao201261 发表于 2014-2-12 14:46 static/image/common/back.gif
所以ssdt使用前必须先使用dsdt,不然无法加载ssdt

是的,SSDT的第一个 "S' 就是Second的首字母,相应的DSDT虽然没有First的首字母,但其实DSDT就是第一,SSDT就是第二,它们的联系很紧密。

xiao201261 发表于 2014-2-12 14:53

daxuexinsheng 发表于 2014-2-12 14:51 static/image/common/back.gif
是的,SSDT的第一个 "S' 就是Second的首字母,相应的DSDT虽然没有First的首字母,但其实DSDT就是第一,SS ...

某种依赖作用,dsdt其实也夹杂着一些ssdt信息,双显卡笔记本dsdt需要ssdt的一些信息屏蔽独立显卡

seoul_sz 发表于 2014-2-16 23:14

高手,鉴定完毕

dglchina 发表于 2014-2-23 21:52

谢谢提供教程,对我这样的小白很适用。。

i@xujif.com 发表于 2014-3-12 11:03

zmmwan 发表于 2014-2-9 01:16 static/image/common/back.gif
对于反复编译出错的 dsdt,我们基本已经可以肯定是由于反编译过程的 bug 产生。理由如下:
一、d ...

我看来一般的dsdt的编译错误都是递归产生的object not exist不一定是真的不存在,而是下面定义这些函数的地方没有编译过,如果去external它,反而会使错误越来越复杂,最简单的方法是,先找parse error之类的错误,把这些修改完了,也就差不多了。

zcq100 发表于 2014-3-15 19:23

收藏备用

Hackxzy 发表于 2014-3-16 17:02

打不到这个路径啊,10.9.2 U盘原版。

xujiahuixuyu 发表于 2014-3-17 11:56

SSDT还没提取,都不知道在哪,我就用了,

zmmwan 发表于 2014-3-25 18:20

{:5_597:}在im上看到rehabman推荐的另一个命令 :iasl -da *.aml   

实践证明比iasl -d *.aml -e *.aml来的更高效。。后者常常不起作用

daxuexinsheng 发表于 2014-3-25 19:06

zmmwan 发表于 2014-3-25 18:20 static/image/common/back.gif
在im上看到rehabman推荐的另一个命令 :iasl -da *.aml   

实践证明比iasl -d *.aml -e *.aml ...

多谢zm大神,马上更新。 :-)
页: 1 2 [3] 4 5 6 7 8 9 10 11 12
查看完整版本: (2015.1.13 更新)联合DSDT和SSDT进行反编译——减少DSDT和SSDT错误的尝试