尝试在Android上执行MRC或MCR指令时获取ILL_ILLOPC(非法操作码)
我正在使用ARM Assembly尝试访问多个协处理器寄存器.每当我有类似的东西
mcr p15, #1, r1, c1, c0
要么
mrc p15, #0, r0, c1, c0
我得到信号4(SIGILL),代码1(ILL_ILLOPC),错误地址80400d00错误,这意味着某些东西正在获得非法(不存在,我假设)操作代码(指令).有几种可能性. mrc和mcr指令本身可能是非法的,但代码编译时没有任何抱怨.如果这是特权模式问题,我希望看到ILL_PRVOPC SIGILL.
另一种可能性是作为mrc和mcr的一部分的操作码(语法是MRC {2}< c>< q>< coproc>,#< opc1>,< Rt>,< CRn>, < CRm>)可能是非法的.我尝试过可能的操作码,但我仍然得到相同的错误和相同的堆栈转储.
Android通常是否允许有指令,或者我正在做的事情是错的?还有什么我应该看的调试?