當前位置:首頁 » 編程軟體 » aml反編譯

aml反編譯

發布時間: 2022-01-10 07:15:06

① 如何使用ACPI Patcher製作DSDT補丁

很多人都知道使用DSDT補丁可以開雙核,但DSDT的功能不僅僅如此,除了開雙核,還可以可以修復ACPI缺陷(不需要Disabler.kext,原版cpupowermanagement正常使用),RTC,HPET缺陷(原版kext正常工作),顯卡(代替efistring),音效卡(只是代替了HDAEnabler.kext),網卡(包括TimeMachine問題),此外還可以解決其他很多奇奇怪怪的問題,因此建議盡可能使用DSDT補丁。

但是DSDT到底是什麼東西,怎麼這么神奇呢?這個要從ACPI說起了,ACPI是Intel(i386,x86_64,IA64)平台的標准固件規范,絕大部分OS需要從BIOS得到的信息都可以從ACPI得到,並且現在的趨勢是未來的任何新的特性相關的信息都只能從ACPI得到。

ACPI的信息包括:
配置信息,這些信息從legacyPNP設備的配置,到多處理器,到NUMA,比如現在的MultipleCore的信息就只能從ACPI得到。linux啟動很多代碼就是處理這些配置信息,比如APIC,IOAPIC設置等。
ACPI相關設備,主要是筆記本電腦相關的設備,包括電源按鈕,電池,外接電源,風扇,熱鍵等。
底層硬體,比如PCI中斷路由,chipset(主要是南橋PCI-to-LPCbridge)操作等。
電源管理,ACPI定義的電源管理包括CPU的電源管理(調頻率P-state,idleC-state,throtting T-state),設備電源管理(D-state),系統電源管理(Suspend-to-Ram,Suspend-to-Disk, power off)等。
設備熱插拔,ACPI用一種統一的方式來描述設備的熱插拔,這樣的設備從單一的PCI設備,到筆記本電腦的DockingStation,到整個PCI hierarchy,CPU,Memory,甚至整個NUMA節點。

可以說要理解現代PC平台必須了解ACPI。ACPI主要是由很多表(Table)組成,而DSDT(Differentiated System Description Table)是其中一個最主要的ACPI表之一,它的定義如下

DSDT is an acronym for DifferentiatedSystem Description Table. Thistable contains theDifferentiated Definition Block, which supplies theinformation and configuration information about the base system.

簡單說就是包含了所有和基本系統(basesystem)不同的設備的信息,basesystem每台機器都是一樣的,這個是在acpispec里指定的,但是每台機器都是不相同的,所以不相同的設備大都是由DSDT表來描述。它包含了很多AML代碼。大多數BIOS是針對windows開發的,而windows自己也不完全遵循acpi規范,所以因為BIOS的bug,這些代碼本身可能有錯,導致其他的系統,如linux,mac os出錯。

我們可以手動修復這些bug使之兼容MAC系統。DSDT在bios里是以編譯後的aml文件存在,需要把它解出來,反編譯成aml代碼形式(dsl文件,文本文件),代碼修改完畢再重新編譯,替換掉bios里原來的dsdt表。不過PC-EFI,Chameleon的出現,使得我們不再需要冒險刷bios,只要把製作好的DSDT.aml文件放在根目錄或者/Extra文件夾里,啟動的時候就會自動使用這個DSDT.aml,從而達到修復ACPI系統bug的作用。

但是DSDT補丁怎麼製作,卻很少有人能詳細的介紹,mac上的軟體基本上只能製作解決雙核,acpi問題的dsdt.aml,要想解決更多的問題,就必須回到windows,使用insanelymac論壇里的一款軟體ACPIPatcher,這個軟體相對比較復雜,今天我們就來了解一下這個軟體的用法。

軟體界面如上圖,左上可以指定bios和製作補丁,右上是具體選擇補丁選項的地方,左下是輸出信息,右下可以看到進度。
先來看左上部分各個標簽的具體作用。

BIOSPatch:選擇一個bios製作dsdt.aml,選擇bios文件和指定輸出dsdt.aml目錄之後,選中GenerateDSDT.aml,然後按下Patch Bios按鈕即可,輸出目錄不可以是bios目錄,否則會出錯

DSDTPatch:對一個已有的DSDT.aml進行acpi修復,選擇DSDT.aml,指定輸出目錄,按下PatchAML即可

ImportDSDT:用已有的DSDT.dsl對bios打補丁,選擇輸入dsl文件和bios,按下PatchBios即可

ExportDSDT:從bios里解出DSDT.dsl文件,選擇bios文件和輸出目錄,按下Exact即可

D/CDSDT:DSL編譯成AML文件,或者AML文件反編譯成DSL文件,取決於選中Compile還是Decomplie,選中Compile的時候如果同時選中Patchbefore compile,可以在把DSL編譯成AML文件的時候打上ACPI補丁。

看完了左上的標簽我們來看最重要的部分,右上bugfix的詳細信息,

General:

這里有三個最重要的修復,HPETPatch,RTCPatch和AliasesPatch,前兩個可以解決一些時鍾方面的問題,很多機器里如果有AppleIntelCPUPowerManagement.kext就會四國,或者不能正常使用,需要Disabler.kext,如果你選了前兩項,從此可以扔掉Disabler.kext,因為AppleIntelCPUPowerManagement.kext可以正常工作了,第三個選項也許更加重要,AliasesPatch直接對應是否能開雙核,對asus,msi的主板來說,這個選項是非常重要的,技嘉沒有這個問題,選不選都無所謂。

點擊Fixes…可以看到一個新窗口

這里都是一些針對編譯時出現error或者warning的fix,作者的意見是當出現這些error或者warning的時候可以選擇,我的意見時全部選擇,防止出現error或者warning,如果還有問題,就需要去網上搜索解決方案,自己動手修改代碼然後再編譯了。

Network:

這里相對比較復雜,你需要知道硬體位置,這個可以用ioRegistryExplorer來看,Lan0應該是百兆網卡而GIGE是千兆網卡,FixGP9指增加一個GPIO9的控制項,UseTime Machine Fix修復Time Machine找不到內置網卡的問題,下面是針對技嘉P43 P45 Realtek 8111c千兆網卡的設置圖,它的硬體位置在PEX 5

Graphics:

這里合理設置後完全可以代替efi-string,natit,nvinject,nvdarwin,nvkush等,首先在model那裡選擇顯卡型號和顯存大小,下面綠色的選項針對N卡,紅色的針對A卡,N卡需要設置nvcap值,A卡需要設置Framebuffer和DevID,Hardwarelocation需要用ioRegistryExplorer看下,PEGP和Use DSDT GFX都要選中。

這里以硬體地址PCI 0為例,分別給出nVidia8800 GT 512MB和ATI HD3870 512MB顯卡的示例。

nVidia 8800 GT512MB

ATI HD3870 512MB

Audio:

通過設置audio可以代替HDAEnabler.kext,設置很簡單,AudioChipset里預置了三種,Realtek ALC888-0,Realtek ALC888-2,RealtekALC889a,ALC888分別對應address 0和address 2,技嘉P43, P45板載的ALC888選RealtekALC888-0,ALC889選Realtek ALC889a,此外還要選中Use HDEF Audio,下面以889為例

看完bug fix來看看左下角的兩個編譯選項,ForceDSDT Compilation表示強制編譯,即便出現錯誤,Stop on compilation Warning表示出現warning時停止編譯,追求完美的人可以選擇此項,因為0error,0warning的dsdt表示沒有任何語法錯誤。

右邊還有一個選項是bios類型選擇,根據你的bios類型選擇Award還是AMI,技嘉的bios是Award

目前市面上較流行的主板BIOS主要有 Award BIOS、AMI BIOS、Phoenix BIOS三種類型。
Award
Award BIOS是由Award Software公司開發的BIOS產品,在目前的主板中使用最為廣泛。Award BIOS功能較為齊全,支持許多新硬體,目前市面上多數主機板都採用了這種BIOS。
AMI
AMI BIOS是AMI公司(全稱:American Megatrends Incorporated)出品的BIOS系統軟體,開發於80年代中期,早期的286、386大多採用AMI BIOS,它對各種軟、硬體的適應性好,能保證系統性能的穩定,到90年代後,綠色節能電腦開始普及,AMI卻沒能及時推出新版本來適應市場,使得Award BIOS佔領了大半壁江山。當然現在的ami也有非常不錯的表現,新推出的版本依然功能強勁。
Phoenix
Phoenix BIOS是Phoenix公司產品,Phoenix意為鳳凰或埃及神話中的長生鳥,有完美之物的含義。Phoenix BIOS 多用於高檔的586原裝品牌機和筆記本電腦上,其畫面簡潔,便於操作。
Insyde
Insyde bios 是台灣的一家軟體廠商的產品,是一種新興的BIOS類型,被某些基於英特爾晶元的筆記本電腦採用,如神舟、聯想。

下面我們以技嘉GIGA EP43-UD3L為例,實際操作一次,顯卡是nVidiaGeforce 9800 GTX 512MB,音效卡是ALC888。
設置輸入輸出路徑,BIOS類型,Stopon warning,General設置

補丁詳細設置

然後按下Patch Bios,運行完畢可以看到成功編譯,而且可以看到編譯過程中出現 0Errors, 0 Warnings, 0 Remarks, 660 Optimizations。

此時到輸出目錄里可以看到dsdt.aml,此外,bios文件下面還會生成patch過的以new結尾的bios文件,如ep43ud3l.f4.new,如果你確認dsdt.aml可以使用,那麼這個bios也是可以使用的,有需要的話可以自行刷bios,不過刷機有風險,還請慎重。

dsdt.aml的使用非常簡單,首先確保你安裝了支持dsdt的引導,如PC-EFIV9,Chameleon1.0.12或者Chameleon 2 RC1,推薦最新的Chameleon2 RC1,然後把dsdt.aml放在系統盤的根目錄或者Extra文件夾里,如果是efi分區啟動,放在efi分區的Extra文件夾里就可以了。

到此,本次講座就算是結束了。全文完整的doc檔和acpi patcher可以在附件下載到。

一點小更新,如果你用acpi patcher得不到DSDT,比如ASUS,MSI的部分主板,你可以在linux下通過在終端里運行
cat /proc/acpi/dsdt > dsdt.aml
得到,然後用acpi patcher把它反編譯得到dsdt.dsl就可以修改了
如果你可以進入mac,那麼用附件里的getdsdt腳本也可以得到dsdt.dat,重命名為dsdt.aml即可

② 如何使用ACPI Patcher製作DSDT補丁

很多人都知道使用DSDT補丁可以開雙核,但DSDT的功能不僅僅如此,除了開雙核,還可以可以修復ACPI缺陷(不需要Disabler.kext,原版cpupowermanagement正常使用),RTC,HPET缺陷(原版kext正常工作),顯卡(代替efistring),音效卡(只是代替了HDAEnabler.kext),網卡(包括TimeMachine問題),此外還可以解決其他很多奇奇怪怪的問題,因此建議盡可能使用DSDT補丁。

但是DSDT到底是什麼東西,怎麼這么神奇呢?這個要從ACPI說起了,ACPI是Intel(i386,x86_64,IA64)平台的標准固件規范,絕大部分OS需要從BIOS得到的信息都可以從ACPI得到,並且現在的趨勢是未來的任何新的特性相關的信息都只能從ACPI得到。

ACPI的信息包括:
配置信息,這些信息從legacyPNP設備的配置,到多處理器,到NUMA,比如現在的MultipleCore的信息就只能從ACPI得到。Linux啟動很多代碼就是處理這些配置信息,比如APIC,IOAPIC設置等。
ACPI相關設備,主要是筆記本電腦相關的設備,包括電源按鈕,電池,外接電源,風扇,熱鍵等。
底層硬體,比如PCI中斷路由,chipset(主要是南橋PCI-to-LPCbridge)操作等。
電源管理,ACPI定義的電源管理包括CPU的電源管理(調頻率P-state,idleC-state,throtting T-state),設備電源管理(D-state),系統電源管理(Suspend-to-Ram,Suspend-to-Disk, power off)等。
設備熱插拔,ACPI用一種統一的方式來描述設備的熱插拔,這樣的設備從單一的PCI設備,到筆記本電腦的DockingStation,到整個PCI hierarchy,CPU,Memory,甚至整個NUMA節點。

可以說要理解現代PC平台必須了解ACPI。ACPI主要是由很多表(Table)組成,而DSDT(Differentiated System Description Table)是其中一個最主要的ACPI表之一,它的定義如下

DSDT is an acronym for DifferentiatedSystem Description Table. Thistable contains theDifferentiated Definition Block, which supplies theinformation and configuration information about the base system.

簡單說就是包含了所有和基本系統(basesystem)不同的設備的信息,basesystem每台機器都是一樣的,這個是在acpispec里指定的,但是每台機器都是不相同的,所以不相同的設備大都是由DSDT表來描述。它包含了很多AML代碼。大多數BIOS是針對windows開發的,而windows自己也不完全遵循acpi規范,所以因為BIOS的bug,這些代碼本身可能有錯,導致其他的系統,如linux,mac os出錯。

我們可以手動修復這些bug使之兼容MAC系統。DSDT在bios里是以編譯後的aml文件存在,需要把它解出來,反編譯成aml代碼形式(dsl文件,文本文件),代碼修改完畢再重新編譯,替換掉bios里原來的dsdt表。不過PC-EFI,Chameleon的出現,使得我們不再需要冒險刷bios,只要把製作好的DSDT.aml文件放在根目錄或者/Extra文件夾里,啟動的時候就會自動使用這個DSDT.aml,從而達到修復ACPI系統bug的作用。

但是DSDT補丁怎麼製作,卻很少有人能詳細的介紹,mac上的軟體基本上只能製作解決雙核,acpi問題的dsdt.aml,要想解決更多的問題,就必須回到windows,使用insanelymac論壇里的一款軟體ACPIPatcher,這個軟體相對比較復雜,今天我們就來了解一下這個軟體的用法。

軟體界面如上圖,左上可以指定bios和製作補丁,右上是具體選擇補丁選項的地方,左下是輸出信息,右下可以看到進度。
先來看左上部分各個標簽的具體作用。

BIOSPatch:選擇一個bios製作dsdt.aml,選擇bios文件和指定輸出dsdt.aml目錄之後,選中GenerateDSDT.aml,然後按下Patch Bios按鈕即可,輸出目錄不可以是bios目錄,否則會出錯

DSDTPatch:對一個已有的DSDT.aml進行acpi修復,選擇DSDT.aml,指定輸出目錄,按下PatchAML即可

ImportDSDT:用已有的DSDT.dsl對bios打補丁,選擇輸入dsl文件和bios,按下PatchBios即可

ExportDSDT:從bios里解出DSDT.dsl文件,選擇bios文件和輸出目錄,按下Exact即可

D/CDSDT:DSL編譯成AML文件,或者AML文件反編譯成DSL文件,取決於選中Compile還是Decomplie,選中Compile的時候如果同時選中Patchbefore compile,可以在把DSL編譯成AML文件的時候打上ACPI補丁。

看完了左上的標簽我們來看最重要的部分,右上bugfix的詳細信息,

General:

這里有三個最重要的修復,HPETPatch,RTCPatch和AliasesPatch,前兩個可以解決一些時鍾方面的問題,很多機器里如果有AppleIntelCPUPowerManagement.kext就會四國,或者不能正常使用,需要Disabler.kext,如果你選了前兩項,從此可以扔掉Disabler.kext,因為AppleIntelCPUPowerManagement.kext可以正常工作了,第三個選項也許更加重要,AliasesPatch直接對應是否能開雙核,對asus,msi的主板來說,這個選項是非常重要的,技嘉沒有這個問題,選不選都無所謂。

點擊Fixes…可以看到一個新窗口

這里都是一些針對編譯時出現error或者warning的fix,作者的意見是當出現這些error或者warning的時候可以選擇,我的意見時全部選擇,防止出現error或者warning,如果還有問題,就需要去網上搜索解決方案,自己動手修改代碼然後再編譯了。

Network:

這里相對比較復雜,你需要知道硬體位置,這個可以用ioRegistryExplorer來看,Lan0應該是百兆網卡而GIGE是千兆網卡,FixGP9指增加一個GPIO9的控制項,UseTime Machine Fix修復Time Machine找不到內置網卡的問題,下面是針對技嘉P43 P45 Realtek 8111c千兆網卡的設置圖,它的硬體位置在PEX 5

Graphics:

這里合理設置後完全可以代替efi-string,natit,nvinject,nvdarwin,nvkush等,首先在model那裡選擇顯卡型號和顯存大小,下面綠色的選項針對N卡,紅色的針對A卡,N卡需要設置nvcap值,A卡需要設置Framebuffer和DevID,Hardwarelocation需要用ioRegistryExplorer看下,PEGP和Use DSDT GFX都要選中。

這里以硬體地址PCI 0為例,分別給出nVidia8800 GT 512MB和ATI HD3870 512MB顯卡的示例。

nVidia 8800 GT512MB

ATI HD3870 512MB

Audio:

通過設置audio可以代替HDAEnabler.kext,設置很簡單,AudioChipset里預置了三種,Realtek ALC888-0,Realtek ALC888-2,RealtekALC889a,ALC888分別對應address 0和address 2,技嘉P43, P45板載的ALC888選RealtekALC888-0,ALC889選Realtek ALC889a,此外還要選中Use HDEF Audio,下面以889為例

看完bug fix來看看左下角的兩個編譯選項,ForceDSDT Compilation表示強制編譯,即便出現錯誤,Stop on compilation Warning表示出現warning時停止編譯,追求完美的人可以選擇此項,因為0error,0warning的dsdt表示沒有任何語法錯誤。

右邊還有一個選項是bios類型選擇,根據你的bios類型選擇Award還是AMI,技嘉的bios是Award

目前市面上較流行的主板BIOS主要有 Award BIOS、AMI BIOS、Phoenix BIOS三種類型。
Award
Award BIOS是由Award Software公司開發的BIOS產品,在目前的主板中使用最為廣泛。Award BIOS功能較為齊全,支持許多新硬體,目前市面上多數主機板都採用了這種BIOS。
AMI
AMI BIOS是AMI公司(全稱:American Megatrends Incorporated)出品的BIOS系統軟體,開發於80年代中期,早期的286、386大多採用AMI BIOS,它對各種軟、硬體的適應性好,能保證系統性能的穩定,到90年代後,綠色節能電腦開始普及,AMI卻沒能及時推出新版本來適應市場,使得Award BIOS佔領了大半壁江山。當然現在的ami也有非常不錯的表現,新推出的版本依然功能強勁。
Phoenix
Phoenix BIOS是Phoenix公司產品,Phoenix意為鳳凰或埃及神話中的長生鳥,有完美之物的含義。Phoenix BIOS 多用於高檔的586原裝品牌機和筆記本電腦上,其畫面簡潔,便於操作。
Insyde
Insyde bios 是台灣的一家軟體廠商的產品,是一種新興的BIOS類型,被某些基於英特爾晶元的筆記本電腦採用,如神舟、聯想。

下面我們以技嘉GIGA EP43-UD3L為例,實際操作一次,顯卡是nVidiaGeforce 9800 GTX 512MB,音效卡是ALC888。
設置輸入輸出路徑,BIOS類型,Stopon warning,General設置

補丁詳細設置

然後按下Patch Bios,運行完畢可以看到成功編譯,而且可以看到編譯過程中出現 0Errors, 0 Warnings, 0 Remarks, 660 Optimizations。

此時到輸出目錄里可以看到dsdt.aml,此外,bios文件下面還會生成patch過的以new結尾的bios文件,如ep43ud3l.f4.new,如果你確認dsdt.aml可以使用,那麼這個bios也是可以使用的,有需要的話可以自行刷bios,不過刷機有風險,還請慎重。

dsdt.aml的使用非常簡單,首先確保你安裝了支持dsdt的引導,如PC-EFIV9,Chameleon1.0.12或者Chameleon 2 RC1,推薦最新的Chameleon2 RC1,然後把dsdt.aml放在系統盤的根目錄或者Extra文件夾里,如果是efi分區啟動,放在efi分區的Extra文件夾里就可以了。

到此,本次講座就算是結束了。全文完整的doc檔和acpi patcher可以在附件下載到。

一點小更新,如果你用acpi patcher得不到DSDT,比如ASUS,MSI的部分主板,你可以在linux下通過在終端里運行
cat /proc/acpi/dsdt > dsdt.aml
得到,然後用acpi patcher把它反編譯得到dsdt.dsl就可以修改了
如果你可以進入mac,那麼用附件里的getdsdt腳本也可以得到dsdt.dat,重命名為dsdt.aml即可

③ 高手請進 Ubuntu 14.04系統下怎麼提取dsdt.aml文件

/sys/firmware/acpi/tables$ sudo cp ./DSDT ./SSDT1 ./SSDT2 ./SSDT3 ./SSDT4 ./SSDT5 ./SSDT6 /home/ubuntu64/DSDT\ SSDT/
/home/ubuntu64/DSDT\ SSDT/這個是目標目錄,上面這條命令用來復制到目標目錄。

④ 誰能幫我把dsdt.dsl編譯成dsdt.aml

論壇上隨處可見。到處充斥著修改dsdt的軟體。比如。 dsdt auto pactor(但其中有好多壇友提出,自己的主板型號裡面都沒有)。dsdt se (此軟體集修改和修復於一身,我也漢化dsdt se了一下,下面有下載地址)。還有dsdt edit& auto fix/patcher

⑤ 怎麼編譯DSL文件為AML文件

編譯DSL文件為AML文件:

1、利用編譯程序從源語言DSL文件編寫的源程序產生目標程序AML文件;

2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。

編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。

(5)aml反編譯擴展閱讀:

編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序;

按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。編譯程序的語法規則可用上下文無關文法來刻畫。

語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。

而自下而上分析法採用的是移進歸約法,基本思想是:用一個寄存符號的先進後出棧,把輸入符號一個一個地移進棧里,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號

⑥ 如何使用ACPI Patcher製作DSDT補丁

很多人都知道使用DSDT補丁可以開雙核,但DSDT的功能不僅僅如此,除了開雙核,還可以可以修復ACPI缺陷(不需要Disabler.kext,原版cpupowermanagement正常使用),RTC,HPET缺陷(原版kext正常工作),顯卡(代替efistring),音效卡(只是代替了HDAEnabler.kext),網卡(包括TimeMachine問題),此外還可以解決其他很多奇奇怪怪的問題,因此建議盡可能使用DSDT補丁。

但是DSDT到底是什麼東西,怎麼這么神奇呢?這個要從ACPI說起了,ACPI是Intel(i386,x86_64,IA64)平台的標准固件規范,絕大部分OS需要從BIOS得到的信息都可以從ACPI得到,並且現在的趨勢是未來的任何新的特性相關的信息都只能從ACPI得到。

ACPI的信息包括:
配置信息,這些信息從legacyPNP設備的配置,到多處理器,到NUMA,比如現在的MultipleCore的信息就只能從ACPI得到。Linux啟動很多代碼就是處理這些配置信息,比如APIC,IOAPIC設置等。
ACPI相關設備,主要是筆記本電腦相關的設備,包括電源按鈕,電池,外接電源,風扇,熱鍵等。
底層硬體,比如PCI中斷路由,chipset(主要是南橋PCI-to-LPCbridge)操作等。
電源管理,ACPI定義的電源管理包括CPU的電源管理(調頻率P-state,idleC-state,throtting T-state),設備電源管理(D-state),系統電源管理(Suspend-to-Ram,Suspend-to-Disk, power off)等。
設備熱插拔,ACPI用一種統一的方式來描述設備的熱插拔,這樣的設備從單一的PCI設備,到筆記本電腦的DockingStation,到整個PCI hierarchy,CPU,Memory,甚至整個NUMA節點。

可以說要理解現代PC平台必須了解ACPI。ACPI主要是由很多表(Table)組成,而DSDT(Differentiated System Description Table)是其中一個最主要的ACPI表之一,它的定義如下

DSDT is an acronym for DifferentiatedSystem Description Table. Thistable contains theDifferentiated Definition Block, which supplies theinformation and configuration information about the base system.

簡單說就是包含了所有和基本系統(basesystem)不同的設備的信息,basesystem每台機器都是一樣的,這個是在acpispec里指定的,但是每台機器都是不相同的,所以不相同的設備大都是由DSDT表來描述。它包含了很多AML代碼。大多數BIOS是針對windows開發的,而windows自己也不完全遵循acpi規范,所以因為BIOS的bug,這些代碼本身可能有錯,導致其他的系統,如linux,mac os出錯。

我們可以手動修復這些bug使之兼容MAC系統。DSDT在bios里是以編譯後的aml文件存在,需要把它解出來,反編譯成aml代碼形式(dsl文件,文本文件),代碼修改完畢再重新編譯,替換掉bios里原來的dsdt表。不過PC-EFI,Chameleon的出現,使得我們不再需要冒險刷bios,只要把製作好的DSDT.aml文件放在根目錄或者/Extra文件夾里,啟動的時候就會自動使用這個DSDT.aml,從而達到修復ACPI系統bug的作用。

但是DSDT補丁怎麼製作,卻很少有人能詳細的介紹,mac上的軟體基本上只能製作解決雙核,acpi問題的dsdt.aml,要想解決更多的問題,就必須回到windows,使用insanelymac論壇里的一款軟體ACPIPatcher,這個軟體相對比較復雜,今天我們就來了解一下這個軟體的用法。

軟體界面如上圖,左上可以指定bios和製作補丁,右上是具體選擇補丁選項的地方,左下是輸出信息,右下可以看到進度。
先來看左上部分各個標簽的具體作用。

BIOSPatch:選擇一個bios製作dsdt.aml,選擇bios文件和指定輸出dsdt.aml目錄之後,選中GenerateDSDT.aml,然後按下Patch Bios按鈕即可,輸出目錄不可以是bios目錄,否則會出錯

DSDTPatch:對一個已有的DSDT.aml進行acpi修復,選擇DSDT.aml,指定輸出目錄,按下PatchAML即可

ImportDSDT:用已有的DSDT.dsl對bios打補丁,選擇輸入dsl文件和bios,按下PatchBios即可

ExportDSDT:從bios里解出DSDT.dsl文件,選擇bios文件和輸出目錄,按下Exact即可

D/CDSDT:DSL編譯成AML文件,或者AML文件反編譯成DSL文件,取決於選中Compile還是Decomplie,選中Compile的時候如果同時選中Patchbefore compile,可以在把DSL編譯成AML文件的時候打上ACPI補丁。

看完了左上的標簽我們來看最重要的部分,右上bugfix的詳細信息,

⑦ 如何用dsdtse提取dsdt

首先,dsl是源代碼文件,aml是二進制文件。二進制文件,是機器能直接執行的。
其次,當源代碼仍存在錯誤時,一般是不允許保存為二進制文件的,因為錯誤使得源代碼不能編譯為二進制,所以在仍然存在錯誤時,不能保存為aml。
再者,一般情況下,軟體提取到的是二進制文件,即aml,再由軟體反編譯回到源代碼,展現在我們面前(可以視為變回了dsl)。即軟體把它又變了回去,但是,在變的過程中,可能出現錯誤,於是,就不能再編譯到二進制,即不能保存為aml。
對於你的問題:
1、沒有錯誤的aml是二進制文件。是機器能直接執行的。可以直接放到clover/acpi/patched/下面。
2、在DSDT仍然存在錯誤時,不能保存為aml,只有修改所有錯誤(警告和提醒不影響),使得編譯通過,才能保存為aml。

⑧ 在黑蘋果中,所說的DSDT是什麼是什麼作用的

DSDT是The Differentiated System Description Table的簡寫。字面上就可以知道它是一個描述系統不同信息的表。

包含了所有除基本系統以外所有不同設備的信息,也就是每台計算機設備的基本系統是相同的,而不相同的設備用DSDT來描述。

用戶通過修改DSDT可以得到更好的硬體支持。最簡單的理解就是DSDT是描述硬體的。mac的驅動是被動驅動,需要讓系統知道存在這個硬體且知道硬體位置。

修改DSDT的主要目的就是讓mac系統識別存在這個硬體並告訴mac系統的硬體位置,以便讓mac系統內置的驅動來驅動硬體工作。

(8)aml反編譯擴展閱讀:

自從蘋果採用Intel的處理器,OSX被黑客破解後可以安裝在Intel CPU與部分AMDCPU的機器上。從而出現了一大批非蘋果設備而使用蘋果操作系統的機器。在Mac蘋果機上面安裝原版Mac系統的被稱為白蘋果(Macintosh),與黑蘋果相對。

黑蘋果板塊,國內的主要討論社區,大部分資料來源於此處,高手雲集。威鋒論壇或威鋒網。黑蘋果板塊,國內主要討論蘋果的一線社區,iOS為主要討論對象。

熱點內容
訪問攔截怎麼解除安卓 發布:2024-09-20 17:28:48 瀏覽:275
蘿卜干存儲 發布:2024-09-20 17:21:37 瀏覽:715
蘋果手機如何遷移軟體到安卓手機 發布:2024-09-20 17:21:34 瀏覽:692
查看伺服器ip限制 發布:2024-09-20 16:56:27 瀏覽:389
p搜系統只緩存1頁為什麼 發布:2024-09-20 16:48:51 瀏覽:839
上網的賬號和密碼是什麼東西 發布:2024-09-20 16:31:31 瀏覽:612
安卓手機王者榮耀如何調超高視距 發布:2024-09-20 16:31:30 瀏覽:428
安卓G是什麼app 發布:2024-09-20 16:23:09 瀏覽:81
iphone怎麼壓縮文件 發布:2024-09-20 16:08:18 瀏覽:356
linux查看用戶名密碼是什麼 發布:2024-09-20 16:03:20 瀏覽:744