ARM 어셈블리를 사용하여 여러 보조 프로세서 레지스터에 액세스하려고합니다. 내가안드로이드에서 MRC 또는 MCR 명령어를 실행할 때 ILL_ILLOPC (잘못된 연산 코드) 가져 오기
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>
)의 일부인 opcode가 잘못된 것일 수 있습니다. 가능한 opcode 시도했지만 여전히 동일한 오류 및 동일한 스택 덤프 가져 오는 중입니다.
Android에서 일반적으로 지침을 허용합니까, 아니면 내가 잘못하고있는 것입니까? 내가 디버깅 할 때 알아둬야 할 것이 있습니까?