gpt4 book ai didi

windows - 有MAKELONGLONG函数吗?

转载 作者:可可西里 更新时间:2023-11-01 12:44:08 25 4
gpt4 key购买 nike

我需要组合两个 32 位值来创建一个 64 位值。我正在寻找类似于 MAKEWORD 的东西和 MAKELONG .我可以轻松定义自己的宏或函数,但如果 API 已经提供了一个,我更愿意使用它。

最佳答案

我在 Windows API 中找不到任何内容。但是,我知道您主要(或至少经常)使用 Delphi,所以这里是一个快速的 Delphi 函数:

function MAKELONGLONG(A, B: cardinal): UInt64; inline;
begin
PCardinal(@result)^ := A;
PCardinal(cardinal(@result) + sizeof(cardinal))^ := B;
end;

更快:

function MAKELONGLONG(A, B: cardinal): UInt64;
asm
end;

说明:在正常的register 调用约定中,前两个参数(如果是基数大小)分别存储在EAX 和EDX 中。一个(基数大小的)结果存储在 EAX 中。现在,一个 64 位的结果存储在 EAX(低位,低地址)和 EDX(高位,高地址);因此我们需要将 A 移动到 EAX 并将 B 移动到 EDX,但它们已经存在了!

关于windows - 有MAKELONGLONG函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3471535/

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