
Надежный (но в настоящее время пьяный, так что воспринимайте это с недоверием) мне сообщил надежный источник, что это нулевая инструкция, которая является незаконной и вызывает своего рода системную ловушку.
Обновлено: Сделано в вики сообщества на случай, если мой друг настолько пьян, что говорит полную чушь :-)
Хотя нулевая инструкция гарантированно является незаконной, это не единственная возможная недопустимая инструкция (и не то, что делает мой GDB). Я подозреваю, что выполнение нулей приведет к SIGILL, а точки останова IME как правило сделают что-то, что приведет к SIGTRAP.
Лучшее предположение - это инструкция «tw» или «twi».
Вы можете покопаться в исходном коде PPC gdb, OS X, вероятно, использует те же функции, что и его корни FreeBSD.
Помимо программных точек останова, PPC также поддерживает аппаратные точки останова, реализованные через регистры IABR (и, возможно, IABR2, в зависимости от версии ядра). Это точки останова для инструкций, но есть также точки останова на данных (реализованные с помощью DABR и, возможно, DABR2). Если ваше ядро поддерживает два набора аппаратных регистров точки останова (т.е. присутствуют IABR2 и DABR2), вы можете делать больше, чем просто запускать по определенному адресу: вы можете указать целый непрерывный диапазон адресов в качестве цели точки останова. Для точек останова по данным вы также можете указать, должны ли они запускаться при записи, чтении или любом доступе.
Архитектуры PowerPC используют «ловушки».
С помощью gdb и функции, которая сама выполняет hexdump, я получаю 0x7fe00008. Похоже, это инструкция tw:
0b01111111111000000000000000001000
011111 31
11111 condition flags: lt, gt, ge, logical lt, logical gt
00000 rA
00000 rB
0000000100 constant 4
0 reserved
т.е. сравнить r0 с r0 и поймать любой результат.
Дизассемблирование GDB - это просто расширенная мнемоника trap
Обновлено: Я использую «GNU gdb 6.3.50-20050815 (версия Apple gdb-696) (сб, 20 октября, 18:20:28 по Гринвичу, 2007 г.)»
Обновлено еще раз: Также возможно, что точки останова условный будут использовать другие формы tw или twi, если требуемые значения уже находятся в регистрах и отладчику не нужно отслеживать счетчик попаданий.
Ответы, предоставленные нетрезвыми источниками, должны быть помечены как вино сообщества.