x86-64数据传输指令

devtools/2025/2/3 14:36:23/

关于汇编语言一些基础概念的更详细的介绍,可移步MIPS指令集(一)基本操作_mips指令 sw-CSDN博客

该指令集中一个字2字节。

该架构有16个64位寄存器,名字都以%r开头,每个寄存器的最低位字节,低1~2位字节,低1~4位字节,前8个字节都可单独拿出来使用。如下图

 当指令以寄存器为目标时,对于生成小于八字节的结果的指令,有两条规则:生成1、2字节的保持高位不变;生成4字节的把高四字节置为0。

这些寄存器中最特别的是栈指针%rsp,用来指明运行时栈的结束位置。在过程的实现中,这个寄存器很重要。

操作数指示符

第一类是立即数,第二类是寄存器,第三类是内存引用。

主要讲内存引用。x86-64有多种不同的寻址方式

数据传输指令

mov是一类数据传输指令,由四条指令组成:movb,movw,movl和movq,第一个操作数是源操作数,第二个是目的操作数。

 常规的movq指令只能以表示为32位补码数字的立即数作为源操作数,然后把这个值符号扩展得到64位的值,放到目的位置。movabsq指令可以任意64位立即数作为源操作数,并且只能以寄存器作为目的。

下面介绍两类mov指令,MOVZ类和MOVS类。

MOVZ类把目的中剩余的字节填充为0,MOVS把目的中剩余的字节填充为符号位。

这里解释没有movzlq指令的原因:该指令可通过如下方式实现,movl指令以寄存器为目的。可以这么做的理由是,生成4字节值并且以寄存器作为目的的指令会把高四位置为0

cltq指令无操作数,效果与movslq %eax %rax完全一致,只是编码更紧凑。

这两类指令与movb,movw,movl和movq不同之处在于,这两类指令会改变高位字节,示例如下


http://www.ppmy.cn/devtools/155738.html

相关文章

golang通过AutoMigrate方法自动创建table详解

一.AutoMigrate介绍 1.介绍 在 Go 语言中,GORM支持Migration特性,支持根据Go Struct结构自动生成对应的表结构,使用 GORM ORM 库的 AutoMigrate 方法可以自动创建数据库表,确保数据库结构与定义的模型结构一致。AutoMigrate 方法非常方便&am…

C# 小说阅读 文本文件阅读

小说阅读 文本文件阅读 编程语言:C# 目录页 阅读 浏览页(webBrowser):

【JavaEE】_MVC架构与三层架构

目录 1. MVC架构 2. 三层架构 3. MVC架构与三层架构的对比 3.1 MVC与三层架构的对比 3.2 MVC与三层架构的共性 1. MVC架构 在前文已介绍关于SpringMAC的设计模式,详见下文: 【JavaEE】_Spring Web MVC简介-CSDN博客文章浏览阅读967次,点…

【数据分析】案例03:当当网近30日热销图书的数据采集与可视化分析(scrapy+openpyxl+matplotlib)

当当网近30日热销图书的数据采集与可视化分析(scrapy+openpyxl+matplotlib) 当当网近30日热销书籍官网写在前面 实验目的:实现当当网近30日热销图书的数据采集与可视化分析。 电脑系统:Windows 使用软件:Visual Studio Code Python版本:python 3.12.4 技术需求:scrapy、…

【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…

网络仿真工具Core环境搭建

目录 安装依赖包 源码下载 Core安装 FAQ 下载源码TLS出错误 问题 解决方案 找不到dbus-launch 问题 解决方案 安装依赖包 调用以下命令安装依赖包 apt-get install -y ca-certificates git sudo wget tzdata libpcap-dev libpcre3-dev \ libprotobuf-dev libxml2-de…

笔灵ai写作技术浅析(三):深度学习

笔灵AI写作的深度学习技术主要基于Transformer架构,尤其是GPT(Generative Pre-trained Transformer)系列模型。 1. Transformer架构 Transformer架构由Vaswani等人在2017年提出,是GPT系列模型的基础。它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全依赖自…

MySQL数据库(二)- SQL

目录 ​编辑 一 DDL (一 数据库操作 1 查询-数据库(所有/当前) 2 创建-数据库 3 删除-数据库 4 使用-数据库 (二 表操作 1 创建-表结构 2 查询-所有表结构名称 3 查询-表结构内容 4 查询-建表语句 5 添加-字段名数据类型 6 修改-字段数据类…