calling-convention 相关问题

调用约定是指函数将参数传递给被调用函数并从中接收返回值的方式。

为什么MIPS ISA中的临时寄存器要分开?

我目前正在上一门涵盖 MIPS ISA 的课程,我注意到的一件事是临时寄存器的分割: 临时寄存器$t0到$t7存储在$8到$15中,但是$t8和$t9是...

回答 1 投票 0

avr-gcc 中 Y 寄存器与调用/堆栈帧的偏移量来自哪里?

在 avr-gcc 网站(https://gcc.gnu.org/wiki/avr-gcc#Frame_Layout)上,它说帧指针(Y 寄存器)偏移了一个字节,因此 Y+1 指向框架的底部。但是当我编译时...

回答 1 投票 0

ARM 处理器上的 BP 寄存器(帧指针)相当于什么?

在intel平台上,BP用于指向堆栈帧的开头并访问参数[bp+0x??]和局部变量[bp-0x??]。 ARM中使用哪个寄存器?或者,是寻址

回答 1 投票 0

可调用类的成员变量数量的变化如何映射到调用它的函数的汇编?

考虑这个 TU: 结构体 Foo { int 运算符()(int) const; }; int foo(Foo b) { 返回 b(17); } 它将编译为: 富(富): 子 rsp,24 莫夫ESI,17 莉亚·迪,[rsp+15] 打电话给 Foo::ope...

回答 1 投票 0

Linux ARM64 调用约定:被调用者需要保存哪些寄存器?

是否有一个寄存器列表,在 aarch64 Linux/BSD 上,如果被调用者要使用它们,被调用者绝对必须保存/恢复它们? ABI 文档在这一点上似乎很混乱。或者至少,...

回答 1 投票 0

为什么现代调用约定在寄存器中传递可变参数?

如果我们看一下一些现代调用约定,例如 x86-64 SysV 风格或 AArch64 风格(标题为“Arm® 64 位架构的过程调用标准”的 aapcs64.pdf 文档),我们会看到 ex...

回答 1 投票 0

这个接口在MSVC和mingw之间二进制兼容吗?

我正在开发一个库,允许其用户(驻留在同一进程中的其他库)交换数据缓冲区和流。该库必须可以从 MSVC 和 mingw 代码中使用(更多

回答 1 投票 0

x86-64 上的 C++:结构/类何时在寄存器中传递和返回?

假设 Linux 上的 x86-64 ABI,在 C++ 中的什么条件下,结构体会传递给寄存器中的函数,还是传递给堆栈上的函数?在什么条件下它们会返回到寄存器中?答案是吗

回答 2 投票 0

为什么“long long”参数需要在RISC-V中“对齐奇偶寄存器对”

正如 RISC-V 调用约定文档所述: 当在堆栈上传递两倍于指针字大小的原始参数时,它们是 自然对齐。当它们传入整数时

回答 2 投票 0

汇编中的返回值和参数

我从来没有遇到过组装本身的问题。我唯一的问题是我不明白参数如何在函数中传递以及如何返回它们。 比方说 公共地址号码 添加编号过程 ...

回答 1 投票 0

x86_64 Linux 系统的 GCC 调用约定

我编写了一个最小函数来测试是否可以调用/链接C和x86_64汇编代码。 这是我的 main.c #包括 外部 int 测试(int); int main(int argc, char* argv[]) { ...

回答 2 投票 0

x86 NASM 崩溃 - 迭代字符串

如何迭代 x86 汇编中字符串的各个字符并打印它们? 全局_main;声明 _main 入口点 外部_printf;外部方法 部门...

回答 1 投票 0

为什么在这个例子中gcc没有为局部变量分配空间? [重复]

这是我用gcc编译的C代码 - #包括 #包括 int sum(int arr[20]) { 整数s = 0; 对于 (int i = 0; i < 20; i++) s += arr[i]; retur...

回答 1 投票 0

尾部调用优化,参数位于堆栈上,被调用者参数多于调用者

我一直在写一个编译器,并和一位同事讨论过这种情况。 在最一般的情况下,假设您的参数位于堆栈中(一旦参数寄存器耗尽)。 如果...

回答 1 投票 0

iPhone/ARM 调用约定

在 iPhone/ARM 上,哪些 CPU 寄存器是应该保留的函数(如果有)?

回答 2 投票 0

C 中函数参数的调用约定和求值顺序之间的区别?

以下代码在不同的编译器上产生不同的输出; #包括 void fun(int x, int y, int z) /* 函数定义 */ { printf("%d %d %d “,x,y,z)...

回答 1 投票 0

无法获取对象类中的方法来识别给定的 String 变量

我用于创建学生 ID 的代码无法找到姓氏,并且我不确定代码的哪一部分导致它无法看到创建新学生对象时给出的姓氏...

回答 1 投票 0

如何访问在进入 DLL 时在堆栈上传递的参数?

我正在从 ctypes 调用 NASM 64 位 DLL。该 dll 有五个输入参数。在 Windows 调用约定中,前四个在 rcx、rdx、r8 和 r9 中传递,第五个在

回答 1 投票 0

记住 x86-64 System V arg 寄存器顺序的最佳方法是什么?

我经常忘记系统调用中每个参数需要使用的寄存器,每次我忘记时我都会访问这个问题。 整数/指针参数到 x86_64 用户空间函数的正确顺序...

回答 2 投票 0

可变参数函数的调用约定[关闭]

初始化可变参数列表时,您可以使用宏 va_start 并在 va 列表开始之前传递 list_name 和最后一个固定参数,因为“最后一个固定参数与

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.