在arm64中有没有办法将32位寄存器复制到64位寄存器中?

cod*_*000 0 assembly arm64

我正在使用arm64,我正在尝试找到一种将32位寄存器复制到64位寄存器的方法,因为mov x1, w6返回操作数不匹配错误,因为您无法使用以下命令将32位寄存器复制到64位寄存器只是一个简单的移动指令。

Sig*_*uza 5

32 位通用寄存器实际上只是 64 位通用寄存器,高 4 字节被清零。正如评论者所指出的,您只需要决定是否需要符号扩展。

所以如果你愿意uint64_t x1 = (uint32_t)w6,你可以:

mov w1, w6
Run Code Online (Sandbox Code Playgroud)

如果你愿意int64_t x1 = (int32_t)w6,你可以:

sxtw x1, w6
Run Code Online (Sandbox Code Playgroud)