Отладка EFI Byte Code

30 Ноя 2014

Обзор средств отладки EBC-приложений с помощью EFI Byte Code Debugger, программного продукта компании Intel

Для отладки EFI Byte Code или EBC-приложений непосредственно в среде UEFI, компания Intel предлагает продукт EBC Debugger, доступный для загрузки на официальном сайте UEFI – http://www.uefi.org. Продукт существует в трех реализациях для следующих процессорных архитектур:

IA32 (Intel Architecture 32)
x64 (x86 64-bit extension, синонимы Intel64 и AMD64)
IPF (Itanium Processor Family, синоним IA64)

 

Приступаем к экспериментам

Согласно классификации выполняемых модулей UEFI, данный отладчик является драйвером. Он загружается с помощью команды load, отключает штатный интерпретатор EBC, резидентно входящий в состав UEFI firmware и подключается вместо него. Получив статус резидента, отладчик перехватывает старт UEFI-приложений, написанных в системе команд EBC, а также загрузку командой load UEFI-драйверов, написанных в системе команд EBC.
 

Выполнена загрузка отладчика.

После этого, старт отлаживаемого приложения (helloebc.efi) перехватывается отладчиком.
Запущенное приложение доступно для отладки на уровне инструкций EBC


Каждое нажатие клавиши F8 приводит к выполнению одной EBC-инструкции и визуализации следующей выполняемой инструкции.
 

 

Результат покомандной трассировки EBC-программы


Используя функцию R (Registers) можно просмотреть дамп регистров виртуального процессора EBC.
 

 

Просмотр дампа регистров виртуального процессора EFI Byte Code.
Визуализируются 64-битные регистры общего назначения R0-R7,
регистры флагов и управления, а также счетчик команд IP (Instruction Pointer)


Используя функцию DB (Dump Bytes) можно просмотреть дамп адресного пространства памяти виртуальной машины EBC. Дамп может быть выведен как в виде байтов (bytes) так и в виде 16-битных слов (words), 32-битных двойных слов (double words) и 64-битных счетверенных слов (quad words). Заметим, что для обозначения разрядности данных, используется терминология, сложившаяся во времена процессора Intel 8086.
 

 

Просмотр дампа памяти виртуальной машины EFI Byte Code.
Стартовый адрес в данном примере – 4BE0D54h, длина блока – 100h или 256 байт.
Формат вывода – байтовый


Как следует из выше изложенного, в составе отладчика имеется дизассемблер EBC-инструкций. Поддерживается установка точек останова по заданным условиям, редактирование содержимого регистров виртуального процессора и памяти, а также ряд вспомогательных операций. Полная информация о наборе поддерживаемых функций содержится в документе EBC Debugger User Manual.pdf

Post Scriptum
Как известно, написание UEFI-приложений и драйверов на языке виртуальной машины EFI Byte Code или EBC позволяет обеспечить кроссплатформенность программного обеспечения и минимизировать затраты на портирование программного кода под различные процессорные архитектуры. В свою очередь, рассмотренный отладчик является примером простого в освоении и эффективного инструмента для отладки EBC-программ. К минусам продукта можно отнести несколько спартанский пользовательский интерфейс и отсутствие поддержки архитектуры ARM. Напомним, спецификацией UEFI эта архитектура поддерживается.

Post Post Scriptum
Простейший пример программирования "Hello, EBC!" в EFI Byte Code приводится в статье Теория и практика EFI Byte Code. Небольшое UEFI-приложение CheckEBC, демонстрирующее возможности программирования, приводится в статье Как работать с EFI Byte Code.

Теги: