cdecl

    0热度

    1回答

    我正在开发一个项目,其中有一些传感器,我希望它们通过USB连接到PC。现在他们写了一个用lib编写的windows lib,并且所有函数都使用c的cdecl调用约定,而且我必须确定,如果我使用其他语言(java!)编程,则会给出调用约定。 所以我研究了一下,发现了一些教程来绑定dll在java中或使用JNA。但这对我来说都是新事物,我想确定它是可能的(也可能是一个例子) - 该设备并不便宜,我想在

    0热度

    1回答

    在为调试器实现堆栈步行器时我正在努力达到了将参数提取到函数调用并显示它们的目的。为了简单起见,我开始使用纯32位(包括调试器和调试器)的cdecl约定和一个带3个参数的函数。然而,我不明白为什么堆栈跟踪中的参数与cdecl定义的参数(从右到左,没有任何寄存器)相比没有规律,尽管现在试图找出它几天。 下面是函数调用我试图堆栈跟踪的表示: void Function(unsigned long lon

    1热度

    1回答

    我必须写在asm函数,以及i在C原型 void fdct(float *in, float *out, unsigned int n); 其中: in:指针输入数据缓冲器 out:指针outcoming数据缓冲器 n:数据矩阵的数量。 函数不会返回任何内容,但会与输出数据的数组一起使用,并且必须根据结果进行更改。 据我了解,在CDECL栈看起来像: esp: ret esp+4: *in -

    -1热度

    1回答

    一个面试问题的cdecl关键字出现较强的混乱在我的脑海即让我们看看这个节目 #include "stdio.h" int main() { static int a=25; void cdecl conv1(); void pascal conv2(); conv1(a); conv2(a); return 0; } void

    0热度

    3回答

    只是很快,为什么没有配套指令要离开x86?这样一来, pushl %ebp movl %esp,%ebp pushl $3 leave ret 将变成: enter #or something pushl $3 leave ret 是不是只是快于一般?

    0热度

    1回答

    去这里:http://cdecl.org/ 输入: char (*arr)[5] 输出: 声明改编为字符指针 什么是 “排列5” 的阵列5?这是否仅仅意味着一个包含5个元素的数组?

    1热度

    1回答

    说我有void f(int a, int b, int c) { g(a, b, c); h(a, b, c); }在x86汇编这样的: section .text f: pop dword [res_1] call g ; g(a, b, c) call h ; h(a, b, c) push dword [res_1] ret se

    4热度

    3回答

    我需要编写调用外部函数的代码,该函数可以是32位Windows应用程序中的stdcall call或cdecl。 我的代码,调用者,无法预先知道其中的哪一个。 现在,如果我尝试从被定义为stdcall的调用站点调用cdecl函数,那么我会得到一个checkEsp异常对话框,并且我猜测这是出于很好的原因。 有什么办法可以做到吗?

    2热度

    1回答

    例如 int foo(short x); short s = -1; foo(s); 是不是一样 //int foo(short x); //Updated int foo(signed x); short s = -1; foo((signed)s);//sign-extend and push to stack 抑或是一样 //int foo(short x); //Upda

    2热度

    1回答

    我无法找到答案。从我读过的%ebp有32位,将%esp移动到%ebp,你仍然会有32位,然后减去70到32,我不明白其余的。我对此很陌生,所以我不是很精通。请给出详细的解释。谢谢! 下面是我遇到的问题。 在这个指令序列的末尾,多少个字节将esp和程序堆栈上存储的返回地址分开?假设我们使用标准的32位x86调用约定来调用这个函数。 804847c functioname: 804847c: pus