调用约定是指函数将参数传递给被调用函数并从中接收返回值的方式。
使用 matlabengine 库时从 Python 调用创建的 MATLAB 对象
我正在尝试从Python调用MATLAB的scatterInterpolant对象的实例。例如,可以通过 Python 代码在 MATLAB 中使用给定值对两个点进行插值,如下所示: 导入
从汇编中调用 C 函数——切换具有超过 6 个参数的函数的调用约定?
我有一个适用于 Linux x64 的汇编应用程序,其中我通过寄存器将参数传递给函数,因此我使用某种调用约定,在本例中为 fastcall。现在我想调用一个 C 函数
我有一个简单的结构体 A,它代表 std::int8_t 的类型安全包装器。 A 已被简化以表示最小的可重现问题。 出于性能原因,使用 -O3 结构应该
例如,%rdi 是否保存传递给 x86-64 中函数的第一个参数的值,或者它是否保存可以找到第一个参数值的地址?换句话说,做...
我编写了函数“A”,它将调用许多其他函数之一。为了节省重写函数“A”,我想将要调用的函数作为函数“A”的参数传递。例如:
Linux 内核中断处理程序中传递函数参数(从 asm 到 C)
当我阅读Linux内核源码时,我遇到了这段代码: __visible void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs) { struct pt_regs *old_regs = set_irq_regs(重新...
从历史上看,为什么似乎每个人和他们的弟弟都定义了自己的调用约定?你有 C、C++、Windows、Pascal、Fortran、Fastcall 以及可能不计其数的其他语言...
在编写函数时,我通常会想起“干净代码”原则 一个函数不应有超过 3 个参数。 然而,考虑到下面这些 x86-64 调用约定,我已经放松了......
使用不同调用约定的关键因素是什么?什么时候有人知道在不同场合使用特定的调用约定,例如 __cdecl 或 __stdcall 或 __fastcall。 示例...
我知道 __cdecl 和 __stdcall 之间的区别是什么,但我不太确定为什么 __stdcall 在 x64 版本中被编译器忽略。 下面代码中的函数 int __stdcall
为什么我的程序集结构的大小与 GetOpenFileNameA 函数期望的结构大小不匹配?
我正在尝试使用 win32 api 和 x64 程序集打开一个打开的文件对话框。为此,我将预期结构的内存分配与 OPENFILENAMEA 结构 (commdlg.h) 的内存分配相匹配,但我...
我正在编写混合 C 和汇编程序。下面我将向您展示计划的详细信息。 我使用 C 标准库函数 printf("%a",value)。但我得到的输出相当不正确。 这...
glibc scanf 从不对齐 RSP 的函数调用时出现分段错误
编译以下代码时: 全球主要 外部 printf、scanf 节.data msg: db "请输入数字:",10,0 格式:db "%d",0 节.bss 编号 resb 4 节.text 主要的: mov rdi, 女士...
我正在使用 visual studio(我想是 x86 程序集)。我对此很陌生,在上传我的问题之前进行了很多搜索。 我正在尝试调用一个用汇编编写的简单函数(位于 .s ...
理论上,被调用者可以在没有指针的情况下直接访问调用者中的堆栈变量吗?
C 是按值传递的,这意味着每次调用函数时,所有参数都会被复制到堆栈帧中。 C也不支持可以访问/修改局部变量的内部函数......
研究 ARM Thumb 指令集时,我注意到虽然通用寄存器和链接寄存器(大部分时间)被压入堆栈,但状态寄存器 (CPSR) 没有。这
在 MSX BASIC 中通过 USR 函数调用的例程中哪些寄存器是被调用者保存的?
在MSX BASIC中通过USR函数调用的机器语言例程中,哪些寄存器的值应该被保留,哪些寄存器可以在不保存原始值的情况下使用? 我试过了……
为什么不用x5~x11作为临时寄存器呢? 有什么理由吗?
printf float in nasm assembly 64-bit
我想用 printf 打印一个浮点值 全球主要 外部打印 节.data 字符串:db`%f `, 0 节.bss rs: 请求 1 [...] movq xmm0, [rs] mov rdi, 字符串 移动 rax, 0 ...
这是我在这个网站上的第一篇文章。我正在寻求您的帮助,因为我在这个问题上完全迷失了方向。 我的目标是在我的 Delphi7 项目中包含一个 JSON 解析器,因为在这个版本...