[英]Assembly mov instruction suffix?
(我将这个问题基于x86-64架构)
如果主内存是由地址索引的字节数组-为什么要使用movq(%rdx), %rax
而不是movb(%rdx), %rax
? 我的意思是movq
用于移动四字,而movb
用于移动字节。 因此,就mov#(%rdx), %rax
,据我所知,源位于内存中,因此应为1个字节。 我知道,寄存器%rax
其实在x86-64的一个四字但是,这并不意味着我们moving
四招-我们是一个字节移动到可以容纳一个四字(8个字节)的地方-右?
那么,为什么不使用movb(%rdx), %rax
或movzbq (%rdx), %rax
呢?
后缀表示指令将移动多少字节。 因此,当您执行movq (%rdx), %rax
,将从内存中移出8个字节,起始地址为%rdx
中的地址。
movb (%rdx), %rax
无效。 movb (%rdx), %al
将从%rdx
的地址移1个字节到%rax
字节。 movzbq (%rdx), %rax
移动1个字节,将其零扩展到8个字节,然后将该值写入%rax
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.