Почему наличие файла инкрементной ссылки (.ilk) меняет мой .exe - PullRequest
0 голосов
/ 02 апреля 2020

Я использую компилятор MSV C x86 14.16.27023 с флагом / INCREMENTAL для создания файла .ilk и выполнения инкрементного связывания. Я заметил, что когда я делаю инкрементную ссылку (т. Е. Я позволяю своему файлу .ilk выполнять свою работу), мой файл .exe содержит немного другие данные, чем если бы я удалил свой файл .ilk и принудительно установил полную ссылку. Разница очень мала, но они важны для меня (я не буду go объяснять, почему сэкономить время). Я использовал dumpbin / ALL и / DISASM на обоих, а затем использовал diff, чтобы получить следующие результаты:

Dump of file sys.exe.w_ilk.txt
                                  | Dump of file sys.exe.wo_ilk.txt

        5E861117 time date stamp Thu Apr  2 11:21:43 2020
                                  |         5E861156 time date stamp Thu Apr  2 11:22:46 2020

  014CBD20: 04 62 A7 05 E8 67 00 00 00 83 C4 0C C6 05 48 F5  
                                  |   014CBD20: 04 62 A7 05 E8 67 00 00 00 83 C4 0C C6 05 E8 7A  

  014CBD30: 09 04 01 C6 05 49 F5 09 04 01 B9 E5 07 00 00 66  
                                  |   014CBD30: 64 09 01 C6 05 E9 7A 64 09 01 B9 E5 07 00 00 66  

  014CBD40: 89 0D 4A F5 09 04 E8 71 A0 F8 FE 8B 55 FC 52 E8  
                                  |   014CBD40: 89 0D EA 7A 64 09 E8 71 A0 F8 FE 8B 55 FC 52 E8  

  022FDB60: 3A 32 31 3A 33 37 0A 36 2E 34 34 0A 30 62 61 32  
                                  |   022FDB60: 3A 32 32 3A 34 32 0A 36 2E 34 34 0A 30 62 61 32  

  022FDF60: 3A 32 31 3A 33 37 00 00 00 00 00 00 00 00 00 00  
                                  |   022FDF60: 3A 32 32 3A 34 32 00 00 00 00 00 00 00 00 00 00  

  0390CBD0: 00 00 00 00 A4 0F 86 5E 00 00 00 00 02 00 00 00  
                                  |   0390CBD0: 00 00 00 00 56 11 86 5E 00 00 00 00 02 00 00 00  

  0390CBF0: A4 0F 86 5E 00 00 00 00 0C 00 00 00 14 00 00 00  
                                  |   0390CBF0: 56 11 86 5E 00 00 00 00 0C 00 00 00 14 00 00 00  

  03923460: 34 0A 96 44 AC 85 24 05 C8 2F 3D 42 0F 00 00 00  
                                  |   03923460: 34 0A 96 44 AC 85 24 05 C8 2F 3D 42 10 00 00 00  

    5E860FA4 cv            6C 03523458  3522A58    Format: RS
                                  |     5E861156 cv            6C 03523458  3522A58    Format: RS

    5E860FA4 feat          14 035234C4  3522AC4    Counts: Pr
                                  |     5E861156 feat          14 035234C4  3522AC4    Counts: Pr

     D2E  HIGHLOW            0409F548
                                  |      D2E  HIGHLOW            09647AE8

     D35  HIGHLOW            0409F549
                                  |      D35  HIGHLOW            09647AE9

     D42  HIGHLOW            0409F54A
                                  |      D42  HIGHLOW            09647AEA

, а затем для разборки:

Dump of file sys.exe.w_ilk.txt
                                  | Dump of file sys.exe.wo_ilk.txt

  014CBD2C: C6 05 48 F5 09 04  mov         byte ptr ds:[0409F
                                  |   014CBD2C: C6 05 E8 7A 64 09  mov         byte ptr ds:[09647

  014CBD33: C6 05 49 F5 09 04  mov         byte ptr ds:[0409F
                                  |   014CBD33: C6 05 E9 7A 64 09  mov         byte ptr ds:[09647

  014CBD3F: 66 89 0D 4A F5 09  mov         word ptr ds:[0409F
                                  |   014CBD3F: 66 89 0D EA 7A 64  mov         word ptr ds:[09647

            04
                                  |             09

Кто-нибудь знает, почему эти различия может существовать?

...