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

标签 android assembly arm

我正在使用 ARM 程序集尝试访问多个协处理器寄存器。每当我遇到类似的事情时

mcr p15, #1, r1, c1, c0

mrc p15, #0, r0, c1, c0

我得到 signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 80400d00错误,这意味着某些东西正在获得非法(我假设不存在)操作代码(指令)。有几种可能性。 mrcmcr指令本身可能是非法的,但代码可以毫无怨言地编译。如果这是特权模式问题,我希望看到 ILL_PRVOPC改为 SIGILL。

另一种可能性是操作码是 mrc 的一部分和 mcr (语法为 MRC{2}<c><q> <coproc>, #<opc1>, <Rt>, <CRn>, <CRm> )可能是非法的。我已经尝试了可能的操作码,但我仍然遇到相同的错误和相同的堆栈转储。

Android 是否通常允许那里的指令,或者是我做错了什么?还有什么我应该注意调试的吗?

最佳答案

的确是权限不足。您不能从用户模式执行此操作,它会导致未定义的指令异常被转换为 SIGILL/ILL_ILLOPC。 grep -Hr PRVOPC <path-to-linux-kernel>/arch/arm不会产生任何结果,而对 ILLOPC 执行相同操作将使您到达 do_undefinstr() .

关于android - 尝试在 Android 上执行 MRC 或 MCR 指令时获取 ILL_ILLOPC(非法操作码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691373/

相关文章:

android - Custom Coroutine Scope 到底是什么?

c++ - 无法在 MIPS 中获得正确的输出

c - 告诉编译器以不同的方式翻译某条指令?

c - crontab 执行的程序出现问题

c++ - CMake 与 Poky 交叉编译

java - android启动activity时防止变暗

android - 如何使 ListItem Textview 用作 Twitter 推文并获得不同的 Linkify 点击次数?

assembly - nasm - 错误 : label or instruction expected at the start of line

C++ - 常量和优化

android - ListView父 View 无法拦截触摸事件