
一.
DSDT修改
    DSDTParser无法自动修改的部分，只有手动修复了，这才是我们的重点。
    （1）修改理念
    一般情况下，我们只需要修改错误，即可用于启动黑苹果，当然我们都是追求完美的，什么警告和标记我们也不愿看到，那么就要细心加上耐心了。
    首先，我们要根据提示框查看提示信息
    其次，根据提示信息，找到代码所在位置
    再次，根据经验和提供的方法进行修改
    最后，重新编译，查看是否修正错误。
    （2）修改实例

①错误提示：
2085	Warning	ResourceTag larger than Field (Tag: 64 bits, Field: 32 bits)
所在代码： CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)
修改方法：将 CreateDWordField修改为 CreateQWordField

②错误提示
3111	Warning	Result is not used, possible operator timeout will be missed
所在代码：Acquire (MUT0, 0x0FFF)
修改方法：将0x0FFF改为0xFFFF
提醒：错误提示Possible operator timeout is ignored，也这样修改。


③错误提示：
4754	Remark	Use of compiler reserved name (_T_0)
所在代码：  Name (_T_0, Zero)
修改方法：将_T前边的短横删除，或者改为T0_0,当然，如果后边是其他数2,3等等，那么相应改为T2_2，T3_3即可
提醒：这种错误要注意，一般仅仅提示Name行所在的此种错误但是这个代码段中很多这样的错误，所以修改这种错误的时候，修改完Name行之后，这个代码段中的下边的所有此类错误要全部修改，然后再根据提示修改下一个代码段，否则你会吃惊的发现突然怎么出现这么多错误。这样比较简便而已。修改完之后，重新编译一下看看还有没有。

④错误提示：
10035	Warning	Not all control paths return a value (WQAA)
所在代码：Method (WQAA, 1, NotSerialized)
                {
                    If (LEqual (Arg0, Zero))
                    {
                        Store (T2D0, Local0)
                        Return (Local0)
                    }
                   ……
                   ……
                    If (LEqual (Arg0, 0x21))
                    {
                        Store (TDBB, Local0)
                        Return (Local0)
                    }
                }
修改方法：在此代码段的倒数第二个大括号之后定位指针，然后按回车键，然后输入Return (Zero),效果如下：
                Method (WQAA, 1, NotSerialized)
                {
                    If (LEqual (Arg0, Zero))
                    {
                        Store (T2D0, Local0)
                        Return (Local0)
                    }
                   ……
                   ……
                    If (LEqual (Arg0, 0x21))
                    {
                        Store (TDBB, Local0)
                        Return (Local0)
                    }
                    Return (Zero)
                }
提醒：诸如此种错误提示，都是在代码段的最后一部分像上边修改方法一样，添加这样一个代码即可解决。

⑤错误提示：
11624	Error	_HID suffix must be all hex digits (GH)
所在代码：Name (_HID, "ABCDEFGH")
修改方法：将GH改为01即可。

⑥错误提示：
17	Error	Name already exists in scope (\TNOT)
所在代码：External (\TNOT)
修改方法：删除此行。

⑦错误提示：
7297	Warning	Result is not used, operator has no effect 
所在代码：Add (Local0, 0x02)
修改方法：此处修改为Add (Local0, 0x02,Local0)即可。

⑧错误提示：
8866	Warning	Not all control paths return a value (_CRS)
8866	Warning	Reserved method must return a value (Buffer required for _CRS)
所在代码：Method (_CRS, 0, NotSerialized)
                {
                    If (IGDS)
                    {
                        Return (CRS)
                    }
                }
            }
        }
修改方法：参考绝情奶牛的方法解决了这种双重错误的问题
前后都添加代码。红色部分为要添加的部分
Method (RES, 0, NotSerialized)
                     {
                        Return (Zero)
                      }
                Method (_CRS, 0, NotSerialized)
                {
                    If (IGDS)
                    {
                        Return (CRS)
                    }
                    Else
                         {
                             Return (RES)
                         }
                }
            }
        }

⑨错误提示：
3588	Warning	ResourceTag larger than Field (Tag: 16 bits, Field: 8 bits)
所在代码：CreateByteField (BUF0, \_SB.PCI0.LPCB.N393.LPT1._CRS._Y16._MIN, IOL0)
修改方法：将CreateByteField改为CreateWordField

⑩错误提示：
3421	Warning	ResourceTag larger than Field (Tag: 64 bits, Field: 32 bits)
所在代码：CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)
修改方法：将CreateDWordField 改为CreateQWordField。

⑪错误提示：
11875	Warning	Unknown reserved name (_VPC)
所在代码： Name (_VPC, Zero)
修改方法：搜索VPC，我们看到大部分的VPC之前都没有短横。所以删除所有搜索到的带短横的VPC之前的短横。
提醒：看到VPC，就想到联想电脑，VPC即Virtual power control.
附：如果错误是Unknown reserved name (_CFG),指向 Method (_CFG, 0, NotSerialized)，那么删除CFG之前的短横即可，因为这个一般只有一个。

12.not a control method : PS0X() 
修改:
     1.直接删除  PS0X() 
	 2.修改为   Return (PS0X)
	
13.




二.
SSDT错误修改
    SSDT的提取和降频修改部分见我的另一篇帖子，第一部分提到了已经。这里重点说一下错误修改。修改的工具和方法和DSDT一样，所以我们直接开始。

①错误提示：
warning:  ResourceTag larger than Field(Tag:64its,Field:32bits)
146	Remark	Effective AML package length is zero
所在代码：    Package (0x00) {}, 
修改方法：将 Package (0x00) {}  修改成 Package (0xFF) {}

②错误提示：
40	Warning	_REG has no corresponding Operation Region
所在代码：Method (_REG, 2, NotSerialized)
修改方法：删除_REG之前的短横即可

③错误提示：
220	Error	syntax error, unexpected PARSEOP_PACKAGE
所在代码：Package (0x06)
        {
            0x80000000, 
            0x80000000, 
            0x80000000, 
            0x80000000, 
            0x80000000, 
            0x80000000
        }
        Package (0x06)
        {
            0x80000000, 
            0x80000000, 
            0x80000000, 
            0x80000000, 
            0x80000000, 
            0x80000000
        }
         ……
         ……
修改方法：我们看到有很多这样的Package，那么我们删除标注行之后一直到下一个NAME之前的
Package (0x06)
            {
                0x000004B0, 
                0x00003848, 
                0x0000000A, 
                0x0000000A, 
                0x00000C00, 
                0x00000C00
            }
提醒：删除之后，出现另一个同样错误，所以一共删除两处

④错误提示：
84	Warning	Reserved method should not return a value (_PDC)
所在代码：Return (Local0)
修改方法：我们追根求源，找到这段代码
Method (_PDC, 1, NotSerialized)
        {
            Store (CPPC, \_PR.CPU0._PPC)
            Store (CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }
我们发现删除Method (_PDC, 1, NotSerialized)中PDC前边的短横即可轻易解决问题。
提醒：类似的错误提示都这样处理，观察上下文，跟修改语病一样。

修正：此处经过lihuanzi2007的指导，我仔查阅了相关修改，发现这样修改确实不妥，做出以下修正
将Return (Local0)改为Return (Zero)

⑤错误提示：
63	Warning	Statement is unreachable
所在代码：0x09
修改方法：追根溯源，代码段：
Method (_PRW, 0, NotSerialized)
            {
                Return (GPRW)
                0x09
                0x04
            }
我们删除下边两行即可解决问题。
0x09
                0x04

⑥错误提示：
67	Error	Object does not exist (_ON_)
所在代码：  _ON ()
修改方法：删除此行即可。（错误）
提醒：大部分此类的错误都这样解决。例外在第七条。

修正：此处修改方法有误，应如此修改：
既然不存在这个项，我们就在SSDT的开头添加。添加的代码样式：External (_ON_) 
我们看一下SSDT开头的格式：
DefinitionBlock ("SSDT_7.aml", "SSDT", 1, "OptRef", "OptTabl", 0x00001000)
{
    External (DID8)
    External (NXD8)
    ……
    ……
那我们这样修改：
DefinitionBlock ("SSDT_7.aml", "SSDT", 1, "OptRef", "OptTabl", 0x00001000)
{
    External (_ON_)  
    External (DID8)
   ……

⑦错误提示：
156	Error	Object does not exist (\_SB.PCI0.GFX0.HDSM)
所在代码： Return (\_SB.PCI0.GFX0.HDSM (Arg0, Arg1, Arg2, Arg3))
修改方法：删除“.HDSM (Arg0, Arg1, Arg2, Arg3)”


。。。。。。



