gpt4 book ai didi

c++ - x64 程序集双字上的符号扩展

转载 作者:行者123 更新时间:2023-11-28 02:23:49 26 4
gpt4 key购买 nike

我目前正在 VS2013 中使用 MASM 使用 x64 程序集进行一些编程。我知道当您向汇编过程(在 C++ 中定义为 extern "C")提供一个整数时,该整数会进入 rcx 寄存器。在这种情况下,整数是 32 位,一个双字的大小。我唯一不确定的是编译器在将 dword 放入 rcx 或零扩展时是否执行符号扩展(将高 32 位置零并丢失 dword 的符号)。如果有人能确认编译器在这种情况下做了什么(因为我不能手动使用 movsxd 并自己保留标志),将不胜感激。

最佳答案

32 位整数在寄存器的 32 位部分(ecx 等)传递,这意味着上半部分为零。没关系,符号并没有丢失,只是没有无用地复制到高 32 位。如果您只使用寄存器的 32 位部分(这在操作 32 位数据时是正常的),那么一切都是应该的。只有在升级到 64 位时才需要符号扩展。

关于c++ - x64 程序集双字上的符号扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408856/

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