繁体   English   中英

汇编mov指令后缀?

[英]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), %raxmovzbq (%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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM