[英]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.