当经典 MacOS 进入程序时,68000 堆栈上有什么?
我试图了解一个旧的经典 Mac 应用程序的入口点。我已经反汇编了第一个 CODE 资源(不是 CODE#0,它是跳转表)。该代码引用了堆栈外的一些变量:0004(…
如何使用 __cdecl 调用约定编译 boost?
我有一个使用 __cdecl 调用约定 (msvc2010) 编译的项目,并使用默认设置使用相同的编译器编译了 boost。 该项目与 boost 链接,但我在运行时收到如下…
栈中的返回地址是如何指定的?
这是我通过反汇编语句 function(1,2,3); 看到的结果: movl $0x3,0x8(%esp) movl $0x2,0x4(%esp) movl $0x1,(%esp) call 0x4012d0 看起来 ret 地址 根…
UNIX 和 Linux 的调用约定是什么? i386 和 x86-64 上的 Linux 系统调用(和用户空间函数)
以下链接解释了 UNIX(BSD 风格)和 Linux 的 x86-32 系统调用约定。 Linux: http://www.int80h.org/bsdasm/#system-calls http:// /www.freebsd.org/…
nasm/yasm 参数,链接到 C++
我有一个关于 nasm 及其与 C++ 的链接的问题。我将一个小测试函数声明为 extern "C" void __cdecl myTest( byte i1, byte i2, int stride, int *width…
我可以以编程方式推断出 C++ 使用的调用约定吗? dll?
想象一下,您想要编写一个程序来测试 c++ dll 文件中的函数。 您应该允许用户选择一个 dll(我们假设我们正在讨论 c++ dll)。 他应该能够获得 dll 导…
在 C/C++ 中将一个函数的当前状态传递给另一个函数
在 C/C++ 中,有没有办法将一个函数的当前状态传递给另一个函数?我的意思是当前状态的所有参数和局部变量。例如: void funcA (int a, int b) { char…
为什么调用者必须在 cdecl 调用约定中清除堆栈?
来自:http://en.wikipedia.org/wiki/X86_calling_conventions push c push b push a call function_name add esp, 12 ;Stack clearing mov x, eax 为…
与使用早期版本的 Visual Studio 构建的第 3 方静态库链接时出错
我正在开发一个链接到第三方静态库(本文称为 EXTERNALLIB)的项目。在 Visual Studio 2005 中,我能够链接到 EXTERNALLIB 并创建可用的可执行文件。…