尝试在Android上执行MRC或MCR指令时获取ILL_ILLOPC(非法操作码)

weixin_38065414 2019-09-12 01:12:03
我正在使用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通常是否允许有指令,或者我正在做的事情是错的?还有什么我应该看的调试?
...全文
481 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38067090 2019-09-12
  • 打赏
  • 举报
回复
这确实是由于证据不足.您不能从用户模式执行此操作,它会导致未定义的指令异常转换为SIGILL / ILL_ILLOPC. grep -Hr PRVOPC< path-to-linux-kernel> / arch / arm没有产生任何结果,而为ILLOPC做同样的事情会让你遇到do_undefinstr().

474

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧