
私のラップトップのACPIテーブルを抽出してデコンパイルしたいです。私はUbuntu Mate 20.04を実行しています。
これを行うにはいくつかの方法があるようです。フォローするこのガイド。
すべてのテーブルのインポート:sudo acpidump > acpi.log
DSDTとSSDTの抽出:acpixtract acpi.log
これは私に...
Intel ACPI Component Architecture
ACPI Binary Table Extraction Utility version 20190509
Copyright (c) 2000 - 2019 Intel Corporation
DSDT - 36705 bytes written (0x00008F61) - dsdt.dat
SSDT - 7917 bytes written (0x00001EED) - ssdt1.dat
SSDT - 2144 bytes written (0x00000860) - ssdt2.dat
SSDT - 2706 bytes written (0x00000A92) - ssdt3.dat
SSDT - 1790 bytes written (0x000006FE) - ssdt4.dat
SSDT - 281 bytes written (0x00000119) - ssdt5.dat
SSDT - 2107 bytes written (0x0000083B) - ssdt6.dat
SSDT - 771 bytes written (0x00000303) - ssdt7.dat
時計を分けなさい:iasl -e *.dat -d dsdt.dat
これが出力です...
Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20190509
Copyright (c) 2000 - 2019 Intel Corporation
File appears to be binary: found 12206 non-ASCII characters, disassembling
Binary file appears to be a valid ACPI table, disassembling
Input file dsdt.dat, Length 0x8F61 (36705) bytes
ACPI: DSDT 0x0000000000000000 008F61 (v01 DELL CL09 00000000 ASL 00040000)
External object resolution file ssdt7.dat
Input file ssdt7.dat, Length 0x303 (771) bytes
ACPI: SSDT 0x0000000000000000 000303 (v01 PmRef ApIst 00003000 INTL 20121220)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt6.dat
Input file ssdt6.dat, Length 0x83B (2107) bytes
ACPI: SSDT 0x0000000000000000 00083B (v01 PmRef Cpu0Cst 00003001 INTL 20121220)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt5.dat
Input file ssdt5.dat, Length 0x119 (281) bytes
ACPI: SSDT 0x0000000000000000 000119 (v01 PmRef ApCst 00003000 INTL 20121220)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt4.dat
Input file ssdt4.dat, Length 0x6FE (1790) bytes
ACPI: SSDT 0x0000000000000000 0006FE (v01 COMPAL CRV ORB 00001000 ACPI 00040000)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt3.dat
Input file ssdt3.dat, Length 0xA92 (2706) bytes
ACPI: SSDT 0x0000000000000000 000A92 (v01 COMPAL CRV ORB 00003000 ACPI 00040000)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt2.dat
Input file ssdt2.dat, Length 0x860 (2144) bytes
ACPI: SSDT 0x0000000000000000 000860 (v01 COMPAL CRV ORB 00003000 ACPI 00040000)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
External object resolution file ssdt1.dat
Input file ssdt1.dat, Length 0x1EED (7917) bytes
ACPI: SSDT 0x0000000000000000 001EED (v01 COMPAL CRV ORB 00001000 ACPI 00040000)
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
Found 7 external control methods, reparsing with new information
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
Disassembly completed
ASL Output: dsdt.dsl - 330062 bytes
iASL Warning: There were 7 external control methods found during
disassembly, but only 2 were resolved (5 unresolved). Additional
ACPI tables may be 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. Note: SSDTs can be dynamically loaded at
runtime and may or may not be available via the host OS.
In addition, the -fe option can be used to specify a file containing
control method external declarations with the associated method
argument counts. Each line of the file must be of the form:
External (<method pathname>, MethodObj, <argument count>)
Invocation:
iasl -fe refs.txt -d dsdt.aml
未解決の外部制御方法なしでACPIテーブルをデコンパイル/逆アセンブルできますか?
私はこのコマンドを使用してiasl -e *.dat -d dsdt.dat
すべてのノートブックSSDTをコマンドに含めるので、すべての可能な外部制御コマンドが解決されると思いましたiasl
。
乾杯
答え1
このコマンドを実行した後、未解決の依存関係が発生すると思います。iasl -e *.dat -d dsdt.dat
つまり、DSDTファイルをデコンパイルすることは、それ自体はエラーではなく、必ずしも問題になるわけではありません。
dsdt.dat
これは、私のファイルから呼び出されたメソッドがDSDTファイルをデコンパイルするコマンドに付属のリスト(* .dat)のSSDTで定義されていないためです。iasl
一部は必要なときにのみロードされる可能性があるため、DSDTおよびすべてのSSDTを抽出するコマンドを実行するときに使用されていない可能性があるため、すべてのシステム生のSSDT(ACPIテーブル)がない可能性があります。
次のコマンドを使用してDSDT.dslファイルを再コンパイルしてみましたiasl DSDT.dsl
が、エラーなしでコンパイルされました。警告3つおよびその他の情報メッセージのみが表示されます。
これACPICA文書ACPIテーブルに関する情報とコマンドを使用してそれらをデコンパイルする方法の非常に便利なソースですiasl
。
私が知らないのは、「解決されていない外部制御方法」の定義を見る方法があるかどうかです。これらの方法を含む(削除された)SSDTを見つける方法を知っている人がいる場合は、いつでも貢献してください。