i'll post up the rest of the disassembled byte comparisons for the changes in 1B for 0501 / 0601 tonight. Been a bit sidetracked playing around with Windows 7 M3 build and don't have IDA pro installed yet on it.
Interesting...Ultra Compare has 2 binary compare modes, one is fast, other is smart, fast picks up 50 bytes diff, while smart only picks up 46 bytes!
i wont bother including string changes since they are visible with hex editor
[ 1 ] = 0501
[ 2 ] = 0601
00002e00 [ 1 ] * 30 35 30 31 00 26 09 08 20 00 00 00 00 00 00 00 0501.&.. .......
00002e00 [ 2 ] * 30 36 30 31 00 15 10 08 20 00 00 00 00 00 00 00 0601.... .......
00002e05-07h
0501 -> seg000:00002E05 db 26h, 9, 8
0601 -> seg000:00002E05 db 15h, 10h, 8
byte declares for bios revision dmi data i think
following changes are related to ACPI tables.
0001b410 [ 1 ] * 44 0B 46 C7 44 0C 01 00 C6 44 0E 05 C6 44 0F 01 D.FÇD...ÆD..ÆD..
0001b410 [ 2 ] * 44 0B 46 C7 44 0C 01 00 C6 44 0E 06 C6 44 0F 01 D.FÇD...ÆD..ÆD..
0001b420 [ 1 ] * C6 44 10 1C C6 44 11 02 C7 44 12 4C B1 C7 44 14 ÆD..ÆD..ÇD.L±ÇD.
0001b420 [ 2 ] * C6 44 10 1D C6 44 11 02 C7 44 12 4C B1 C7 44 14 ÆD..ÆD..ÇD.L±ÇD.
0001b41b, 0001b423 differ. i've included what appears to be a function as exists directly below a return far (retf)
00051950 [ 1 ] * 54 20 26 08 00 09 4D 53 46 54 97 00 00 00 00 00 T &...MSFT—.....
00051950 [ 2 ] * 54 20 15 08 00 10 4D 53 46 54 97 00 00 00 00 00 T ....MSFT—.....
00051a50 [ 1 ] * 54 20 26 08 00 09 4D 53 46 54 97 00 00 00 00 00 T &...MSFT—.....
00051a50 [ 2 ] * 54 20 15 08 00 10 4D 53 46 54 97 00 00 00 00 00 T ....MSFT—.....
00051b50 [ 1 ] * 50 20 26 08 00 09 4D 53 46 54 97 00 00 00 00 00 P &...MSFT—.....
00051b50 [ 2 ] * 50 20 15 08 00 10 4D 53 46 54 97 00 00 00 00 00 P ....MSFT—.....
00051be0 [ 1 ] * 50 20 26 08 00 09 4D 53 46 54 97 00 00 00 00 00 P &...MSFT—.....
00051be0 [ 2 ] * 50 20 15 08 00 10 4D 53 46 54 97 00 00 00 00 00 P ....MSFT—.....
00051ce0 [ 1 ] * 43 20 26 08 00 09 4D 53 46 54 97 00 00 00 00 00 C &...MSFT—.....
00051ce0 [ 2 ] * 43 20 15 08 00 10 4D 53 46 54 97 00 00 00 00 00 C ....MSFT—.....
00051d50 [ 1 ] * 47 20 26 08 00 09 4D 53 46 54 97 00 00 00 00 00 G &...MSFT—.....
00051d50 [ 2 ] * 47 20 15 08 00 10 4D 53 46 54 97 00 00 00 00 00 G ....MSFT—.....
0005c6f0 [ 1 ] * 4D 20 26 08 00 09 4D 53 46 54 97 00 00 00 00 00 M &...MSFT—.....
0005c6f0 [ 2 ] * 4D 20 15 08 00 10 4D 53 46 54 97 00 00 00 00 00 M ....MSFT—.....
00068c00 [ 1 ] * 26 08 00 09 4D 53 46 54 97 00 00 00 00 00 00 00 &...MSFT—.......
00068c00 [ 2 ] * 15 08 00 10 4D 53 46 54 97 00 00 00 00 00 00 00 ....MSFT—.......
00068cb0 [ 1 ] * 49 43 20 26 08 00 09 4D 53 46 54 97 00 00 00 00 IC &...MSFT—....
00068cb0 [ 2 ] * 49 43 20 15 08 00 10 4D 53 46 54 97 00 00 00 00 IC ....MSFT—....
above are all changes made to ACPI table struct data member, which accounts for 18 bytes of change.
ie 00068cb3 - 00068cb6 which for 0501 is 09000826h and 0601 is 10000815h, its a 32bit unsigned int (dword).
Struct for general acpi system header looks like so:
struct acpi_table_header {
char TABLE_SIGNATURE[4]; /* name of table */
uint32_t TABLE_LENGTH; /* length in bytes 0x00000028 , size of this struct (24 bytes) + uint32_t table_offset_entry[1] (pointer to uint32_t pointer array with 1 member consisting of memory location for table offset) */
unsigned char ACPI_REVISION; /* rsdt is ACPI v1.0 table so value is 1 */
unsigned char TABLE_CHECKSUM; /* must always be 0 */
char OEM_ID[6]; /* A_M_I_ */
char OEM_TABLEID[8]; /* OEMXXXX[:space:] */
uint32_t OEM_COMPILE_REVISION; /* 0501 rev is 0x09000826, 0601 is 0x10000815. these are the 2 different bytes in each table struct*/
char CREATOR_ID[4]; /* acpi source compiler creator 4 char long id ( msft in this case )*/
uint32_t CREATOR_ASL_REVISION; /* revision of acpi source compiler ( 0x00000097 )*/
}
ie. for rsdt
struct acpi_table_rsdt {
struct acpi_table_header header;
uint32_t table_offset_entry[1]; /* mem offset ptr to push into esi register i think */
}
so most changes from what I can see account for a newer compile revision of the acpi tables!
Bookmarks