исходный код GDB breakpoint.c - 0x4e 0x4f - PullRequest
1 голос
/ 05 марта 2012

Я смотрю в GDB, для реализации точки останова. Для простоты я взял самый первый GDB релиз 2.51 (выпущенный в 1988 году). Я вижу данные вставки точки останова как -

#define BREAKPOINT {0x4e, 0x4f}

что такое 0x4e и 0x4f?

1 Ответ

3 голосов
/ 26 апреля 2012

0x4E 0x4F - это машинная инструкция Motorola 68000 для «TRAP # 15». Инструкция TRAP вызывает исключение, и на некоторых платформах ловушка № 15 определяется как исключение точки останова. Вот почему 0x4E и 0x4F появляются в вашем источнике GDB 2.51 для работы с такими платформами, как sun3.

Ссылки:

Это Справочное руководство для программиста семейства Motorola M68000 содержит подробности инструкции TRAP на стр. 4-188. В частности, инструкция представлена ​​12-битным значением 010011100100, за которым следует 4-битный «вектор» (в данном случае 1111). Таким образом, «ЛОВУШКА № 15» представлена ​​как 0x4E 0x4F. Sun специально использует вектор 15 для точки останова / трассировки - Поиск Google показывает многочисленные комментарии и примеры исходного кода.

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