Можно ли поймать инструкцию, которая записала недопустимое значение в регистр ПК?
221
xiaokaoy
Например, после инструкции
pop
записывает недопустимое значение, скажем, 0, в pc
регистр, ЦП попытается извлечь инструкцию, расположенную в 0, что обычно вызовет ошибку сегмента.
При обработке ошибки мы можем прочитать значения регистров, включая pc
регистр, который в данном случае равен 0. Очевидно, что если бы мы могли узнать адрес инструкции, вызвавшей недопустимое pc
значение, например адрес pop
инструкции выше, это помогло бы нам намного больше с отладкой. Есть ли способ отловить ошибку чуть раньше (поймать предыдущую инструкцию, которая вызвала ошибку)?
Используйте встроенный эмулятор с возможностью трассировки.
sawdust 7 лет назад
0
Возможно, этот вопрос лучше подходит для stackoverflow (и я обычно предлагаю наоборот). Основная предпосылка: инструкция не является недействительной при ее получении - она недействительна, когда процессор пытается ее выполнить. И хотя модель fetch-decode-execute довольно далека от того, как выглядит современный ARM-конвейер, факт, что эти две операции являются совершенно отдельными операциями, остается.
unixsmurf 7 лет назад
0
Просто используйте отладчик, там должно быть около миллиарда.
MariusMatutiae 7 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4