gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:53:56 27 4
gpt4 key购买 nike

(微软)x64 calling convention状态:

The arguments are passed in registers RCX, RDX, R8, and R9. If the arguments are float/double, they are passed in XMM0L, XMM1L, XMM2L, and XMM3L.

这很好,但为什么只是 float /加倍?为什么整数(可能还有指针)不也通过 XMM 寄存器传递?
似乎有点浪费可用空间,不是吗?

最佳答案

因为大多数对非 FP 值(即整数和地址)的操作都设计为使用通用寄存器。

有整数 SSE 运算,但它们只是算术运算。

因此,如果调用约定支持通过 SSE 寄存器传递整数和地址,则几乎总是需要将值复制到通用寄存器。

关于windows - 为什么 Windows x64 调用约定不使用 XMM 寄存器来传递超过 4 个整数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6274917/

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