x86架构中的寄存器和常用指令

寄存器

这些寄存器可以用于多种操作,如算术运算、数据传输等。在 x86 架构中,这些包括:

通用

这些寄存器可以用于多种操作,如算术运算、数据传输等
AX/EAX/RAX:累加器,用于算术运算。通常用于存储函数调用返回值
BX/EBX/RBX:基址寄存器,用于地址指定。
CX/ECX/RCX:计数寄存器,用于字符串操作和循环计数,this指针
DX/EDX/RDX:数据寄存器,用于 I/O 操作和一些算术运算。

在这里插入图片描述

索引寄存器

用于字符串操作和数组处理:
SI/ESI/RSI:源索引寄存器,用于字符串操作中的源地址指定。
DI/EDI/RDI:目的索引寄存器,用于字符串操作中的目标地址指定。字符串操作时,用于存放目的地址的,和esi两个经常搭配一起使用,执行字符串的复制等操作

指针寄存器

用于指向栈和基址:
IP/EIP/RIP:指令指针寄存器,包含下一条要执行的指令的地址。
IR(指令寄存器):存储当前正在执行的指令。
SP/ESP/RSP:堆栈指针寄存器,指向栈顶。栈顶指针,指向栈的顶部
BP/EBP/RBP:栈底指针,指向栈的底部,通常用ebp+偏移量的形式来定位函数存放在栈中的局部变量

状态和控制寄存器

FLAGS/EFLAGS/RFLAGS:标志寄存器,包含了当前状态标志,如零标志、进位标志、溢出标志等。
CR0、CR1、…:控制寄存器,用于控制操作系统的行为,如内存管理、缓存控制等。

段寄存器

在 x86 架构中,用于内存分段:
CS:代码段寄存器,包含当前执行代码的段基址。
DS:数据段寄存器,通常包含数据的段基址。
SS:堆栈段寄存器,包含栈的段基址。
ES、FS、GS:额外的段寄存器,用于特殊用途。

R8 - 第8个通用寄存器,可用于多种目的。
R9 - 第9个通用寄存器,可用于多种目的。
R10 - 第10个通用寄存器,可用于多种目的。
R11 - 第11个通用寄存器,可用于多种目的。
R12 - 第12个通用寄存器,可用于多种目的。
R13 - 第13个通用寄存器,可用于多种目的。
R14 - 第14个通用寄存器,可用于多种目的。
R15 - 第15个通用寄存器,可用于多种目的。

函数调用使用

rax:通常用于存储函数调用返回值
rsp:栈顶指针,指向栈的顶部
rdi:第一个入参
rsi:第二个入参
rdx:第三个入参
rcx:第四个入参
r8:第五个入参
r9:第六个入参
rbx:数据存储,遵循Callee Save原则
rbp:数据存储,遵循Callee Save原则
r12~r15:数据存储,遵循Callee Save原则
r10~r11:数据存储,遵循Caller Save原则

参考

https://zhuanlan.zhihu.com/p/664901746
https://zhuanlan.zhihu.com/p/502718676

指令

在这里插入图片描述

MOV 将源操作数传送到目标操作数
ADD 将源操作数与目标操作数相加 最后结果给到目标操作数
SUB 将源操作数与目标操作数相减 最后结果给到目标操作数
AND 将源操作数与目标操作数进行与运算 最后结果给到目标操作数
OR 将源操作数与目标操作数进行或运算 最后结果给到目标操作数
XOR 将源操作数与目标操作数进行异或运算 最后结果给到目标操作数
NOT 将源操作数与目标操作数进行异非运算 最后结果给到目标操作数
MOVS 数据传送 与MOV不同处在于它可以将内存的数据传送到内存
STOS 将 AL AX EAX 的值存到EDI指定的内存地址
REP 循环

先入后出
PUSH 押入 通用寄存器 内存地址 立即数
POP 释放。通用寄存器 内存地址

JMP指令 (EIP劫持)
JMP 寄存器 内存 立即数
修改EIP

CALL指令 相当于
push %eip
jmp addr

RET 指令 表示返回

参考

https://www.cnblogs.com/mazhimazhi/p/15241450.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/290209.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中有哪些容器(集合类)?

Java中的集合类主要由Collection和Map这两个接口派生而出,其中Collection接口又派生出三个子接 口,分别是Set、List、Queue。所有的Java集合类,都是Set、List、Queue、Map这四个接口的实现 类,这四个接口将集合分成了四大类&#…

从姿态估计到3D动画

在本文中,我们将尝试通过跟踪 2D 视频中的动作来渲染人物的 3D 动画。 在 3D 图形中制作人物动画需要大量的运动跟踪器来跟踪人物的动作,并且还需要时间手动制作每个肢体的动画。 我们的目标是提供一种节省时间的方法来完成同样的任务。 我们对这个问题…

YOLOv9 实现多目标跟踪

YOLOv9项目结合了YOLOv9的快速目标检测能力和DeepSORT的稳定跟踪能力,实现了对视频流中多个对象的实时、准确检测和跟踪。在具体应用中,该项目能够对视频中的行人、车辆或其他物体进行实时定位、识别和持续跟踪,即使在复杂环境、对象互相遮挡…

Unity照片墙简易圆形交互效果总结

还要很多可以优化的点地方,有兴趣的可以做 比如对象的销毁和生成可以做成对象池,走到最左边后再移动到最右边循环利用 分析过程文件,采用Blender,资源已上传,可以播放动画看效果,下面截个图: …

如何使用 ArcGIS Pro 制作三维建筑

三维地图已经逐渐成为未来地图的趋势,对于大范围应用,只需要普通的建筑体块就行,如果有高程数据,还可以结合地形进行显示,这里为大家介绍一下 ArcGIS Pro 制作三维建筑的方法,希望能对你有所帮助。 数据来…

单片机之串口通信

目录 串口介绍 通信的基本概念 并行通信和串行通信 同步通信和异步通信 串行异步通信方式 串行同步通信方式 通信协议 单片机常见通信接口 串行通信三种模式 串口参数 传输速度 ​串口的连接 电平标准 串行口的组成 串口数据缓冲寄存器 串行口控制寄存器 串口…

HackTheBox-Machines--Legacy

文章目录 1 端口扫描2 测试思路3 445端口漏洞测试4 flag Legacy 测试过程 1 端口扫描 nmap -sC -sV 10.129.227.1812 测试思路 目标开启了135、139、445端口,445 SMB服务存在很多可利用漏洞,所以测试点先从445端口开始。而且在Nmap扫描结果中&#xff0c…

深入Facebook的世界:探索数字化社交的无限可能性

引言 随着数字化时代的到来,社交媒体平台已经成为了人们日常生活中不可或缺的一部分,而其中最为突出的代表之一便是Facebook。作为全球最大的社交媒体平台之一,Facebook不仅仅是一个社交网络,更是一个数字化社交的生态系统&#…

蓝桥杯 2022 省A 选数异或

一种比较无脑暴力点的方法&#xff0c;时间复杂度是(nm)。 (注意的优先级比^高&#xff0c;记得加括号(a[i]^a[j])x&#xff09; #include <iostream> #include <vector> #include <bits/stdc.h> // 包含一些 C 标准库中未包含的特定实现的函数的头文件 usi…

Gemma开源AI指南

近几个月来&#xff0c;谷歌推出了 Gemini 模型&#xff0c;在人工智能领域掀起了波澜。 现在&#xff0c;谷歌推出了 Gemma&#xff0c;再次引领创新潮流&#xff0c;这是向开源人工智能世界的一次变革性飞跃。 与前代产品不同&#xff0c;Gemma 是一款轻量级、小型模型&…

2024/3/27打卡更小的数(十四届蓝桥杯)——区间DP

目录 题目 思路 代码 题目 思路 题目说求数组某个区间中的数进行翻转&#xff0c;由于区间选择多&#xff0c;首先想到DP问题。 第一版想到的方法&#xff08;错误的&#xff09;&#xff0c;当进行状态计算的时候&#xff0c;无法判定区间是否翻转后满足要求&#xff0c;…

day72Html

常用标签&#xff1a; 分类&#xff1a; 块级标签&#xff1a;独立成行 行级标签&#xff1a;不独立成行&#xff0c;同一行可放多个行级标 注意网页显示时&#xff0c;忽略空白字符,(回车符&#xff0c;空格&#xff0c;tab制表符&#xff09; 一&#xff09;块级标签&#xf…

算法之美:B+树原理、应用及Mysql索引底层原理剖析

B树的一种变种形式&#xff0c;B树上的叶子结点存储关键字以及相应记录的地址&#xff0c;同等存储空间下比B-Tree存储更多Key。非叶子节点不对关键字记录的指针进行保存&#xff0c;只进行数据索引 , 树的层级会更少 , 所有叶子节点都在同一层, 叶子节点的关键字从小到大有序排…

IntelliJ IDEA中遇到的“cannot access java.lang.String“错误及其解决方案(day8)

intelliJ 今天遇到使用intelliJ遇到了一个新错误&#xff0c;有问题就解决问题是一个程序员最基本的修养&#xff0c;如下&#xff1a; 在上面的代码中&#xff0c;我使用了this.这个关键字&#xff0c;发现出现了以上问题&#xff0c;找了一些资料&#xff0c;不是很明白&am…

基于CNN-RNN的动态手势识别系统实现与解析

一、环境配置 为了成功实现基于CNN-RNN的动态手势识别系统&#xff0c;你需要确保你的开发环境已经安装了以下必要的库和工具&#xff1a; Python&#xff1a;推荐使用Python 3.x版本&#xff0c;作为主要的编程语言。TensorFlow&#xff1a;深度学习框架&#xff0c;用于构建…

LLM2LLM: Boosting LLMs with Novel Iterative Data Enhancement

LLM2LLM: Boosting LLMs with Novel Iterative Data Enhancement 相关链接&#xff1a;arXiv GitHub 关键字&#xff1a;LLM、Data Augmentation、Fine-tuning、NLP、Low-data Regime 摘要 预训练的大型语言模型&#xff08;LLMs&#xff09;目前是解决绝大多数自然语言处理任…

《Vision mamba》论文笔记

原文出处&#xff1a; [2401.09417] Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model (arxiv.org) 原文笔记&#xff1a; What&#xff1a; Vision Mamba: Efficient Visual Representation Learning with Bidirectional St…

分类模型评估:混淆矩阵与ROC曲线

1.混淆矩阵2.ROC曲线 & AUC指标 理解混淆矩阵和ROC曲线之前&#xff0c;先区分几个概念。对于分类问题&#xff0c;不论是多分类还是二分类&#xff0c;对于某个关注类来说&#xff0c;都可以看成是二分类问题&#xff0c;当前的这个关注类为正类&#xff0c;所有其他非关注…

Java项目:78 springboot学生宿舍管理系统的设计与开发

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统的角色&#xff1a;管理员、宿管、学生 管理员管理宿管员&#xff0c;管理学生&#xff0c;修改密码&#xff0c;维护个人信息。 宿管员…

RegSeg 学习笔记(待完善)

论文阅读 解决的问题 引用别的论文的内容 可以用 controlf 寻找想要的内容 PPM 空间金字塔池化改进 SPP / SPPF / SimSPPF / ASPP / RFB / SPPCSPC / SPPFCSPC / SPPELAN &#xfffc; ASPP STDC&#xff1a;short-term dense concatenate module 和 DDRNet SE-ResNeXt …