movz
我理解和之间的区别movs
。
movz
用零填充空字节,同时movs
用符号位(零或一)填充它们。
但是,我遇到了以下示例
movabsq $0x0011223344556677, %rax
movb $0xAA, %dl
movb %dl, %al
movsbq %dl, %rax
在第 3 行之后,%rax = 00112233445566AA
. 直到这我才明白。但是我不明白为什么 %rax 在第 4 行之后等于。 FFFFFFFFFFFFFFAA
不应该是00000000000000AA
因为 %dl 是正数,所以空位填充为零吗?