gpt4 book ai didi

c++ - 编译器将 cpu 寄存器中的这种结构传递给函数是否有意义?

转载 作者:可可西里 更新时间:2023-11-01 17:35:58 25 4
gpt4 key购买 nike

我想知道某种结构是否包含多个基元但其总大小小于或等于单个 cpu 寄存器(如 4 字节寄存器)的大小,它对编译器有意义吗在按值传递或引用函数时将其放入那些 4 字节寄存器之一,而不是在被调用者堆栈上复制它或传递指向它的指针,并且通常在将多个原语传递给传入 cpu 寄存器的数组或结构之类的函数会派上用场吗?

这种结构的例子:

struct sample{
public:
char char1;
char char2;
};

将结构传递给函数的示例:

void someFunc(const sample input){
//whatever
}
void someFunc(sample input){
//whatever
}
void someFunc(sample & input){
//whatever
}
void someFunc(const sample & input){
//whatever
}

最佳答案

这是在您的执行环境的应用程序二进制接口(interface) (ABI) 中定义的。该标准在调用函数时没有说明任何关于处理器寄存器的内容,因此创建一个将小结构打包到单个处理器寄存器中的环境是合法的。

对于引用部分,它们很可能无论如何都作为指针传递,因为在被调用函数内部采用引用地址时,它必须解析为引用对象的地址。

关于c++ - 编译器将 cpu 寄存器中的这种结构传递给函数是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4213107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com