调用约定 问答列表

为什么 T* 可以传入寄存器,而 unique_ptr<T> 不能?

作者:einpoklum 提问时间:10/11/2019

我正在观看 Chandler Carruth 在 CppCon 2019 上的演讲: 没有零成本抽象 在其中,他举了一个例子,说明他对使用一个 over an 会产生多少开销感到惊讶;该段大约在 ...

为什么 printf 仍然在 RAX 低于 XMM 寄存器中的 FP 参数数量的情况下工作?

作者:pesotsan 提问时间:4/24/2022

我正在阅读 Linux 64 系统中的“开始 x64 汇编编程”一书。我正在使用 NASM 和 gcc。 在关于浮点运算的章节中,本书指定了以下用于添加 2 个浮点数的代码。在这本书和其他在线资源中,...

为什么不使用堆栈内存?

作者:Dr. Gut 提问时间:1/8/2020

请看以下示例: struct vector { int size() const; bool empty() const; }; bool vector::empty() const { r...

为什么 T* 可以传入寄存器,而 unique_ptr<T> 不能?

作者:einpoklum 提问时间:10/11/2019

我正在观看 Chandler Carruth 在 CppCon 2019 上的演讲: 没有零成本抽象 在其中,他举了一个例子,说明他对使用一个 over an 会产生多少开销感到惊讶;该段大约在 ...

将带有 LoadLibrary 的 C DLL 加载到 C++ 应用程序中,调用约定错误

作者:John Alway 提问时间:12/8/2020

我正在将Visual Studio 2019与C++一起使用。 我正在尝试将用 C 代码(不是我)编写的 32 位 DLL 加载到我的 C++ 应用程序中。dll 叫做 SDL_mixer.dll(...

在 Linux/x86-84 上传递大对象的 C++ 调用约定

作者:Xiaoyong Guo 提问时间:1/22/2021

我正在尝试理解在 C++/Linux/x86-64 平台中按值传递对象作为函数参数的开销。 我用于探索的实验代码发布在下面和 godbolt.org 上:https://godbolt.org/z/...

ASM/NASM - 在类型结构中返回 MUL 的高低

作者:1111 B 提问时间:12/2/2022

global mymul mymul: mov rax, rdi mul rsi ret #include <stdio.h> typedef struct { unsigned lon...

Linux x64 调用约定 - 为什么前 6 个参数与 RBP 的负偏移量相同?

作者:Xiaoyong Guo 提问时间:7/13/2023

我正在阅读此页面 Linux x64 调用约定,但对通过寄存器和堆栈传递函数参数感到困惑。它说: 参数 1-6 在修改之前通过寄存器 RDI、RSI、RDX、RCX、R8、R9 访问,或者通过 RB...

ARM汇编:如何输出存储在寄存器中的值

作者:Vincent_Matthew 提问时间:10/16/2023

我正在为 raspberry pi 4 32 位编写 ARM 代码。我需要让用户输入两个有符号的 int 值,然后使用这些值来计算运算 add、mul 和 orr 并输出到屏幕。当我运行程序时,每次操...

C++ 参数传递优化普通类大小

作者:resu 提问时间:11/4/2023

我有一个微不足道的,它代表了 std::int8_t 的类型安全包装器。 已简化为表示最小的可重现问题。struct AA 出于性能原因,在此示例中将 struct 作为参数传递时,结构应遵循与 b...


共11条 当前第1页