Недавно я прочитал, что контрольные точки программного обеспечения для Linux на ARM реализованы с использованием команды UND
в режиме ARM и инструкции BKPT
в режиме Thumb. Почему существуют две отдельные инструкции, используемые для подмены программных прерываний?Точки останова на ARM
0
A
ответ
0
Thumb код совместимый:
0000e150 <pthread_mutexattr_setpshared>:
e150: b573 push {r0, r1, r4, r5, r6, lr}
e152: 4605 mov r5, r0
e154: 460c mov r4, r1
e156: 4616 mov r6, r2
e158: f7fd fa70 bl b63c <pthread_mutexattr-0xba>
e15c: 4629 mov r1, r5
Чистая рука:
0000d564 <pthread_mutex_init>:
d564: e2503000 subs r3, r0, #0
d568: 03a00016 moveq r0, #22
d56c: 012fff1e bxeq lr
рука bkpt 0xe7f001f0
палец bkpt 0xde01
Если попытаться использовать всегда рука bkpt и переписать первую инструкцию в функции: pthread_mutex_init все будет хорошо, но если переписать первую команду в pthread_mutexattr_setpshared, вторая инструкция будет также переписана.
Если вы всегда пытаетесь использовать большой байт bkpt и переписываете первую инструкцию в инструкции pthread_mutex_init, это будет недействительным.
Смежные вопросы
- 1. Аппаратные точки останова на ARM
- 2. условной точки останова на Node.js
- 3. Невозможно перейти в GDB после перехода Thumb/ARM, точки останова ARM не установлены
- 4. Точки останова в общих библиотеках из файла точки останова
- 5. Точки останова PPC
- 6. точки останова не работают
- 7. Точки останова ChildWindow
- 8. Точки останова не работают
- 9. Макроостановка без точки останова
- 10. таНос запуск точки останова
- 11. Xcode игнорирует точки останова
- 12. Точки останова игнорируются
- 13. Как удалить точки останова?
- 14. Фундаментальные точки останова
- 15. Точки останова не работают
- 16. Точки останова GDB
- 17. Ошибка условием точки останова
- 18. Ошибка возврата точки останова
- 19. точки останова в cloud9IDE
- 20. Точки останова не увольняются
- 21. Параметры настройки точки останова
- 22. Точки останова (пакет strucchange)
- 23. Зависимые точки останова
- 24. Ошибка компиляции точки останова
- 25. Настройка точки останова в доступе TLB
- 26. CSS «точки останова» на высоте контейнеров
- 27. Firebug только разрывает на первой точки останова
- 28. Аппаратные точки останова на XP 64 бит
- 29. Xdebug не останавливаясь на точки останова
- 30. Как работают точки останова на встроенном устройстве?
Рука и большой палец - это два разных набора инструкций. –
@dwelch Я понимаю, что это два разных набора инструкций. Однако почему существует необходимость в двух отдельных инструкциях по точке останова? ARM не определяет, что такое инструкция точки останова, Linux делает (в отличие от того, как у вас это есть для x86/x64). –
У ARM нет инструкции 'bkpt' [начало armv5] (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/CIHBIGGI.html)? Изменить: неважно, если это Linux, вероятно, необходимо поддерживать все версии ARM. – tangrs