X86_64调用约定问题
我们知道,X86_64 使用寄存器 rdi、rsi、rdx、rcx、r8、r9 来存储普通函数的参数,并使用堆栈内存来存储大参数,并使用 xmm 来存储 float 和 double …
假设组合 C 和 x86 汇编时的调用约定
我有一些由 C 函数调用并从 C 函数获取参数的汇编例程。现在,我假设这些参数以 cdecl 顺序在堆栈上传递。这是一个合理的假设吗? 编译器(GCC)会检…
FPU 指令崩溃且 asm 代码不起作用
抱歉我的英语很差, 我正在努力提高我的 ASM 能力,我发现很容易 使用机器代码例程进行处理的入口点 从c代码中, 我以这种方式使用它 char asmRoutine…
使用 VC2010 修复 libvlc 发布模式崩溃
我在一个使用 VC2010 编译的应用程序中使用 libVLC(也尝试过 VC2008),我的应用程序的调试模式工作得很好,但是一旦我编译到发布模式并尝试调用 lib…
将参数传递给 DLL
我正在实现一个全局鼠标挂钩,但在向 DLL 传递参数时陷入困境。你能帮我一下吗? 这是启动钩子的主机应用程序函数: function TMainForm.StartHook(Lo…
cdecl 错误:之前需要初始化程序
我对 cdecl 调用约定有疑问: void Test1(char* str, ...) // ok {} void cdecl Test2(char* str, ...) // error: expected initializer before 'Test…
MIPS 编译器中的寄存器使用哪个?
我目前正在写一个玩具编译器作为作业,针对MIPS架构。 从高级语言转换时通常有 18 个可用寄存器:s0 到 s7(由被调用者保存),以及 t0 到 t9 是调用…
无法解析的外部符号 - 来自 C++ 的 LNK2019动态链接库
我使用 GetProcAddress 从 C++ dll 加载 GetInstance 函数到我的基本代码并得到 一些未解决的外部符号错误: 错误LNK2019:无法解析的外部符号“_decl…
CLR/Fastcall:大值类型如何在内部传递给被调用函数?
只是出于好奇:值类型通常是复制的,并且 JIT 编译器在调用方法时似乎使用 Microsoft 的 Fastcall 调用约定。这会将前几个参数放入寄存器中,以便快速…
导出函数(VS2008)的默认调用约定是什么?
假设以下 C++ 代码在函数声明中没有提及调用约定,那么导出函数 Exported 的调用约定是什么?我的猜测是 cdecl 的默认值。 extern "C" { __declspec (…