Как определить архитектуру файла LE (линейный исполняемый файл)? - PullRequest
0 голосов
/ 07 апреля 2020

Какую архитектуру набора команд имеет файл LE (линейный исполняемый файл)? В связанной статье говорится: смешанный 16/32 бит .

  1. Означает ли это, что один и тот же файл LE может содержать 16-битный и 32-битный код?
  2. Как определить, содержит ли он 16-разрядный (8086) код?
  3. Как определить, содержит ли он 32-разрядный (i386) код?

Обратите внимание, что я Мне известно о поле Тип процессора (см. здесь ), которое может различать guish между 80286 и i386 (80386). Тем не менее, я интерпретирую это как требование к типу процессора, так что это не определяет архитектуру, например, шестнадцатеричный 40 действителен в обоих: это означает inc ax в 16-битном коде и означает inc eax в 32 битовый код, и оба могут быть выполнены процессором 80386. Меня интересует, что означает hex 40 в коде файла LE.

1 Ответ

0 голосов
/ 07 апреля 2020

Мне удалось найти https://www.program-transformation.org/Transform/PcExeFormat, на основании которого ответ следующий:

Если установлен бит 13 флага объекта в записи таблицы объектов, то это 32- бит, в противном случае он 16-битный.

В таблице исполняемых записей бит 1 флага LE или байт типа пакета LX различаются между 16-битным и 32-битным.

Поскольку их может быть несколько В записях этих таблиц один файл LE или LX может содержать как 16-битный, так и 32-битный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...