欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mov指令流程?

傅智翔2年前20瀏覽0評論

moV指令是存取數據指令,cpu主要是跟寄存器和內存打交道,可以進行兩種尋址方式的操作:直接尋址和間接尋址;指令類型主要是:將立即數取入指定數據寄存器;將直接地址中的數據取入指定數據寄存器;將指定寄存器內的數據存入指定的地址中;將指定寄存器內的數據放入地中址寄存器指定的內存中。

mov指令

  1.mov指令的順序是從右到左,如mov a,b,則把b的值復制給a。如:MOV 目的操作數(a),源操作數(b) ,即a=b

  2.除了之前提到的movb,movw,movl,movq,還有movabsq,代表傳送絕對的四字,movq雖可傳四字,但一旦要傳立即數,則只能傳32位補碼表示的立即數,隨后把它符號拓展到64位。而movabsq可以直接傳64位的立即數,但是它只能以寄存器作為目的地。

  3.所有mov指令都不支持從一個內存地址直接傳到另一個內存地址,如movw (%rax),4(%rsp)是不行的。

  4.決定mov使用哪個后綴的是寄存器的大小,當兩邊操作的都是寄存器時,若大小不同,必須用第5條中的小數據復制到大目的地的類型的mov指令,當兩邊操作的是立即數和內存時,可以以立即數大小為準,

  例子:movl $0x4050,%eax  0x4050雖然是2字節,但%eax是4字節,所以movl

     movw %bp,%sp

     movb (%rdi,%rcx),%al

     movb $17,(%rsp)  立即數->內存

     movq %rax,-12(%rbp)

  5.當想將小的數據復制到大的目的地時,可以用movz或movs,前者代表用0填充高字節,后者代表用符號填充高字節,后面還要加上兩種轉換數據的大小,

  比如movzbw(字節->字,0填充),movswq(字->四字,符號填充),還有一種cltq指令,特指%eax->%rax的符號拓展轉換,等價于movslq %eax,%rax

  注意movs和movz都是以寄存器為目的地的。

  根據以上信息,可以知道,之前的第4點中的特殊規則其實相當于是說movl可以實現movzlq的功能