问题标签 [calling-convention]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - stdcall 可以有可变参数吗?
据我所知,只有 caller-clean-stack 约定可以使用可变参数。
顺便说一句,WinApi StringCchPrintfW 是这样声明的。(我删除了 SAL)
__inline HRESULT __stdcall
StringCchPrintfW (
STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat, ...
);
stdcall 也可以有可变参数吗?
c - printf:如何解释损坏的结果
给出(Linux,gcc,x64)
实际上,用 g++ 编译它会给出随机结果而不是第二个 0。
我知道我给了无效的说明符printf
并且它触发了未指定未定义的行为,但我想知道为什么会发生这种特定的损坏,因为long long
它们double
的大小相同。
c++ - 如何返回一个复杂的返回值?
目前我正在编写一些汇编语言程序。正如一些约定所说,当我想向调用者返回一些值时,比如一个整数,我应该在 EAX 寄存器中返回它。现在我想知道如果我想返回一个浮点数、一个双精度数、一个枚举,甚至是一个复杂的结构怎么办。如何返回这些类型的值?
我可以考虑在 EAX 中返回一个地址,该地址指向内存中的实际值。但这是标准的方式吗?
非常感谢~~~
calling-convention - 如何调查Windows中PE二进制文件的调用约定?
是否有工具可以显示调用约定是 _cdecl 还是 _stdcall 还是其他?
linux - 无法理解 x86-64 函数序言
我遇到了崩溃,在调查时我发现自己完全被以下代码阻止:
这是通过objdump --disassemble /usr/lib64/libc.a
在 64 位 Linux x86 系统上运行,然后搜索输出生成的。这是AT&T 语法,所以目的地在右边。
具体来说,我不明白最后一条指令。在函数触及该寄存器之前,它似乎正在将rdx
寄存器的值写入堆栈某处(很远,很远)的内存中。对我来说,这没有任何意义。
我尝试阅读调用约定,现在我最好的理论rdx
是用于参数,所以代码基本上是直接“返回”参数值。这不是函数的结束,所以当然它并没有真正返回。
c# - 自动呼叫功能(拨号器 + IVR + 文字转语音)
我有一个场景,我必须使用 VOIP(图表)使用自动呼叫功能。
我需要一个系统或拨号器来自动化拨号过程并通过系统获得响应。我们需要一个能够自行拨号(我们没有任何代理交互)给定号码并在处理拨号后提供信息的工具。
我们不需要任何代理交互,我们应该开发一个在线处理订单的应用程序,我们需要通过文本到语音的过程与卖家确认,即当客户在线下订单时,系统会检查来自经销商的订单的可用性并向客户提供响应。
c - 如何在 C 中包装非标准调用约定?
无需详细说明,假设我需要使用 C 代码中的非标准调用约定。使用此约定的函数可能会在堆栈上返回多个值。将每个函数放入使用内联汇编进行调用的包装器中,通过给定包装器的指针参数发送输出是很简单的。不幸的是,这个解决方案不能很好地概括,我需要一些适用于一般情况的东西。我应该放弃并使用宏来封装包装,还是有更通用的方法来编写,例如,invoke
处理管理堆栈的肮脏工作的可变参数函数?
perl - 在使用其他人的 Perl API 时避免使用 $_ 是一种惯例吗?
我刚刚在将其他人的 API 与默认变量 $_ 结合使用时被抓到了
输出是:
指定我自己的循环变量而不是依赖 $_ 可以解决问题。
将 $_ 与其他人编写的 API 结合使用是不是太天真了?或者这是该 API 模块中的错误?
c++ - ESP 的值未正确保存
从上图中您可以看到函数setAttribute从其调用返回时发生错误。
有谁知道如何解决图片中显示的这个错误?我知道这是调用约定之间的错误,但是如何找出 setAttribute 的调用约定是什么?
c++ - 回调函数和常规函数有什么区别?
好的,我将给出两个函数正在使用CALLBACK
和常规函数的示例。
注意:这些例子不是我写的。
常规函数
使用 _stdcall 的函数
有什么区别?
注意:我不确定调用约定是如何工作的,举个例子会有所帮助!