簡體   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