assembly - 在 x64 程序集中添加值

标签 assembly x86 64-bit x86-64

ADD EAX,EBX如果只对EAX的低32位进行运算,是否会将EAX的高32位归零?

那么添加 RAX、EBX 呢?是否可以?如果是,RAX 的高 32 位是否保留?

最佳答案

ADD EAX, EBXRAX 的高 32 位归零。 ADD RAX, EBX 不是有效指令。

听起来您想将 EBX 中的 32 位值添加到 RAX 中的 64 位值。为此,首先您可以进行零扩展 (MOV EBX, EBX) 或符号扩展 (MOVSX RBX, EBX),然后添加 RBX > 到 RAX。 (如果将 EBX 中的值解释为无符号,则使用零扩展,如果有符号,则使用符号扩展)。

关于assembly - 在 x64 程序集中添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815736/

相关文章:

c - 为什么ESP指向[esp+0xc]?

c - 一个简单的附加分支会导致性能下降

c# - 64 位 P/Invoke 特质

assembly - 是否有适用于 Windows 的免费小型汇编代码编译器/汇编器?

c++ - 使用结构参数从程序集调用 C++ 函数

c - 如何用C软件中断正在运行的函数?

matlab - 如何使用 CMake 和 Visual Studio 2010(64 位)构建 MATLAB R2011a(64 位)mex 文件?

c++ - ld : symbol(s) not found for architecture x86_64 using GNU Make and clang

assembly - ARM 并行指令 ASX 和 SAX 的用途?

gcc - 尝试使用具有多个替代约束的内联汇编在 amd64 中实现 128 位添加