calling-convention 相关问题

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

通过对象数组调用构造函数

A类{static int i; A(){System.out.println(++ i); } public static void main(String h []){A obj [] = new A [30];一个obj [30] =新的A [30]; : - 这一行应该调用...

回答 3 投票 1

没有通过__attribute __((fastcall))通过寄存器将函数参数从asm传递到C

我试图从汇编程序调用C函数,但我没有按预期传递值(参数)。 fastcall属性从gcc生成警告并被忽略!我正在使用MASM风格......

回答 1 投票 2

传递函数作为参数

我编写了函数'A',它将调用许多其他函数之一。为了保存重写函数'A',我想传递函数作为函数'A'的参数调用。例如: ...

回答 7 投票 32

64位C ++传递具有“不同”调用约定作为参数的函数会产生不明确的错误

我的目标是使用__cdecl和__stdcall调用约定轻松地提取任意函数的原型。它在32位工作正常。唯一改变的是呼唤......

回答 1 投票 6

Windows 64位调用约定

根据我在调用Windows函数时可以找到的文档,以下内容适用: - Windows上遵循Microsoft x64调用约定[12] [13]并预启动UEFI(对于x86 -...上的长模式)。

回答 1 投票 0

为什么不在XMM向量寄存器中存储函数参数?

我正在读这本书:“计算机系统 - 程序员的视角”。我发现,在x86-64架构上,我们只限于6个积分参数,这些参数将传递给...

回答 2 投票 14

为什么Windows x64调用约定不使用XMM寄存器传递超过4个整数args?

(Microsoft)x64调用约定规定:参数在寄存器RCX,RDX,R8和R9中传递。如果参数是float / double,则它们在XMM0L,XMM1L,XMM2L和XMM3L中传递。 ...

回答 2 投票 4

为什么rax和rdi在这种情况下的工作方式相同?

我做了这个代码:global strlen; int strlen(const char * string); strlen:xor rcx,rcx retry:cmp byte [rdi + rcx],0 je result inc rcx jmp retry ...

回答 1 投票 0

逐个传递参数,或者将它们包装在数组,结构或元组中

将参数传递给函数时,我总是假设逐个传递参数与传递它们包装在数组或结构或元组中没有什么不同。但是,一个简单的实验......

回答 1 投票 15

在数字参数之前计算通用参数的数量

如何在数字参数之前找到用于调用命令的通用参数的数量。例如,如何在以下(错误)函数中区分arg1和arg2?...

回答 1 投票 0

在跳入函数之前有没有办法保存寄存器?

这是我的第一个问题,因为我找不到任何与此主题相关的内容。最近,在为我的C游戏引擎项目制作课程时,我发现了一些有趣的东西:struct Stack * S1 = ...

回答 1 投票 3

x86-64 System V ABI在哪里记录?

x86-64 System V ABI(用于除Windows之外的所有内容)过去常常访问http://x86-64.org/documentation/abi.pdf,但该网站现已脱离互联网。有一个新的权威家园......

回答 2 投票 35

CPU寄存器中返回的用户定义类型的C ++对象。实例方法如何工作?

我知道当我调用实例方法时,对象地址被分配给'this'隐藏指针参数。通过这种方式,该方法可以访问当前对象的实例变量,不像...

回答 3 投票 1

来自CS的Windows x64上的不同asm:APP x86-64用于交换long的Linux示例函数

我正在阅读CS:APP第3版(第3章。图3.7 GAS汇编代码)长期交换(长* xp,长y){long x = * xp; * xp = y;返回x; } exchange:movq(%rdi),%r ax movq%rsi,(%rdi)...

回答 1 投票 0

X86-64传递float和int作为参数

将float作为第一个参数传递给函数时,%xmm0寄存器被设置。如果我们想要将整数作为函数中的第二个参数传递,该怎么办? %rdi或%rsi中的哪一个获得...

回答 1 投票 0

优化处理标签(空结构)函数参数

在某些情况下,我们使用标签来区分功能。标记通常是一个空结构:struct Tag {};假设我有一个使用这个标签的函数:void func(Tag,int a); ...

回答 1 投票 4

调用和打印课程时遇到问题

我正在做一个家庭作业,我们正在创建一个用于程序的类,用于单独或全部计算一次进行基本数学计算。所以补充一下......

回答 2 投票 1

如何使用C中的内部c ++类类型? [重复]

我有一个C ++类MyClass声明一个公共枚举类型MyEnum,我想在C文件中使用该枚举。我怎样才能做到这一点 ?我试图在C ++文件中声明我的函数,然后把所有东西都放进去......

回答 2 投票 3

是否保存了rdi和rsi调用者或被调用者保存的寄存器?

根据维基百科x86调用约定,它表示对于Microsoft x64调用约定:寄存器RBX,RBP,RDI,RSI,RSP,R12,R13,R14和R15被认为是非易失性的(callee -...

回答 1 投票 0

如何从MIPS过程返回数组?

从MIPS过程返回地址或值数组的标准方法是什么?例如,假设我想读一个句子并想要返回该句中的单词。要么, ...

回答 1 投票 0

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