我需要在执行arm指导员之后从寄存器r0获取值。
JNIEXPORT jboolean JNICALL test(JNIEnv* env, jobject obj)
{
/* execute arm instructions code,the result has been stored in register r0 */
......
/* get result from register r0 */
int result = 0;
__asm __volatile(
"mov %0,r0/n"
:"=r"(result)
:
:
);
/* return value according to result */
}
但我得到的编译器错误如下:
Error: garbage following instruction -- `mov r2,r0/n'
在Bo Persson的帮助下,我通过将“/ n”更改为“\ n”来修复编译器错误。但是我从结果中得到一个奇怪的数字-1449926。预期结果应为1或10。
使用IDA pro进行调试后,寄存器r0的编号正确。我认为将值从r0传递给变量结果有一些问题。我想知道如何从寄存器r0获取值并将其与结果一起存储。