汇编器可以在1byte寄存器上使用movw指令吗?

问题描述 投票:1回答:1

有四种类型的mov指令:movbmovwmovl。 后缀bwl表示源寄存器的大小。 然而,在组装时,我发现了这些后缀的问题。 见下面的例子。

 .global main
 main:
  movb %ss, (%ecx) # ==> assemble (X)
  movw %ss, (%ecx) # ==> assemble (O)

即使源寄存器%ss是1字节大小,

1字节指令movb %ss, (%ecx)汇编失败, 2字节指令qazxsw poi汇编成功。

为什么会这样? 它只是linux movw %ss, (%ecx) bug吗?

assembly x86 elf disassembly mov
1个回答
4
投票

ss寄存器长度为16位(2字节),所以movw确实是正确的,而as被正确拒绝。

通常,除非没有寄存器操作数,否则您可以简单地省略大小后缀并让汇编程序推断它。汇编程序通常做得非常好。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.