[Assembly] 程序的机器级表示(二):数据传输指令

本文深入探讨了程序在机器级别的数据传输指令,包括其形式、注意事项、符号扩展和零扩展。特别强调了movl指令的特性,如在目的操作数为寄存器时高位会被置零,以及如何通过movl实现零扩展。同时,提到了cltq指令用于进行符号扩展。
摘要由CSDN通过智能技术生成

数据传输指令的形式

指令 效果 描述
mov S, D D ← S 传送
movb 传送字节
movw 传送字
movl 传送双字
movq 传送四字
movabsq I, R D ← S 传送绝对的四字

需要注意的点

  • 传送指令的两操作数不可均为内存位置。
  • movl在以寄存器作为目的时,会把寄存器的高位设为0
    例子:分别执行movabsq $0xABCDEF0123456789, %r8movl $0xFFFFFFFF, %r8d,此时%r8寄存器的值为00000000FFFFFFFF
  • movq仅可以操作32位补码的立即数,而movabsq仅可以以寄存器为目的地

符号扩展/零扩展

零扩展

指令 效果 描述
movz S, R R ← (零扩展)S 以零扩展进行传送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值