Я использую ARM Assembly, пытаясь получить доступ к нескольким регистрам сопроцессора.Всякий раз, когда у меня есть что-то вроде
mcr p15, #1, r1, c1, c0
или
mrc p15, #0, r0, c1, c0
, я получаю signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 80400d00
ошибку, которая означает, что что-то получает недопустимый (я полагаю, несуществующий) код операции (инструкция).Есть несколько возможностей.Сами инструкции mrc
и mcr
могут быть недопустимыми, но код компилируется без нареканий.Если бы это была проблема привилегированного режима, я бы ожидал увидеть ILL_PRVOPC
SIGILL.
Другая возможность состоит в том, что код операции, который является частью mrc
и mcr
(синтаксис MRC{2}<c><q> <coproc>, #<opc1>, <Rt>, <CRn>, <CRm>
) может быть незаконным.Я пробовал возможные коды операций, но все равно получаю ту же ошибку и тот же дамп стека.
Обычно ли в Android разрешены инструкции или это неправильно?Что-нибудь еще, что я должен смотреть, чтобы отладить?