从C ++中的寄存器r0获取结果(arm指令集)

时间:2017-02-17 04:42:54

标签: c++ assembly arm

我需要在执行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获取值并将其与结果一起存储。

0 个答案:

没有答案