Quantcast
Channel: Блоги Intel® Developer Zone
Viewing all articles
Browse latest Browse all 106

Как справиться с IA-32 кодом или особенности декодера Simics

$
0
0

Декодирование IA-32 кода — задача архисложная. Чтобы в этом убедиться, можете обратиться к "Intel Software Development Manual" или к статьям, ранее написанным на хабре:"Префиксы в системе команд IA-32", "Правильно ли работает ваш дизассемблер?". Давайте посмотрим, как с этой задачей борется функционально точный полноплатформенный симулятор Wind River Simics, позволяющий создать высокопроизводительное виртуальное окружение, в котором любая электронная система, начиная с одной платы и заканчивая целыми многопроцессорными, многоядерными и даже многомашинными системами, может быть определена, разработана и запущена.

Большинство библиотек для декодирования IA-32 инструкций генерируют или используют таблицы соответствия между кодами операций и инструкциями. Пример использования данного подхода описан в статье "Дизассемблер своими руками". Однако декодирование префиксов и аргументов обычно написано руками:libopcodesmetasmbeaenginedistorm. Данный подход обладает существенным недостатком — добавление поддержки новых наборов команд потребует большого количества ручной работы.
Существуют и другие способы создания декодеров, например с помощью языка GDSL. Данный подход является универсальным и позволяет создавать декодеры для любых архитектур.
Simics же использует совершенно другой не менее универсальный подход для работы с IA-32 инструкциями, названный раздельным декодированием

Подробнее http://habrahabr.ru/company/intel/blog/215687/.


Viewing all articles
Browse latest Browse all 106

Trending Articles