代码之家  ›  专栏  ›  技术社区  ›  Kristina

无法从disassembly中解码简单的arm函数原型?

  •  0
  • Kristina  · 技术社区  · 16 年前

    我想不出这个简单函数的原型:

    在堆栈中:

    函数调用:

    这就是我目前所了解的,它会导致错误。

    不知道 void cameradevicecreate(int 1,int 2,int*3); < /代码>

    使用了三个寄存器(r0、r1、r2),因此应该有三个参数。第三个是指堆栈变量(我仍然不知道它是如何工作的)。# 0x28 (var_28)仅在添加调用中提到,不确定它可能是什么。 我在哪里犯了错误? < /P>

    如果我漏掉了一些信息,告诉我,我会加上去的。这是来自 camera.framework by the way.

    堆栈中: stack screenshot

    函数调用:

    function call screenshot

    这就是我目前所得到的,它会导致一个错误。

    //No idea
    void CameraDeviceCreate(int one,int two,int* three);
    

    使用了三个寄存器(r0、r1、r2),因此应该有三个参数。第三个是指堆栈变量(我仍然不知道它是如何工作的)。γ 0x28 (var_28)只在add调用中提到,不确定它可能是什么。 我在哪里犯了错误?

    如果我漏掉了一些信息,告诉我,我会加上去的。这是来自 照相机框架 顺便说一句。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Jeff    16 年前

    你为什么认为你弄错了?

    注意,不能保证第三个参数是“int*”——你需要看看r4中的那个参数——我猜它实际上是被指向的某种结构,而不是一个int。