汇编寄存器介绍

2023-10-27

1. 通用寄存器

名称 全称 32位 16位 8位 编号 功能
%rax 累加器(Accumulator) %eax %ax %ah %al 0 (0000) 返回值
%rcx 计数器(Count Register) %ecx %cx %ch %cl 1 (0001) 第二个参数
%rdx 数据寄存器(Data Register) %edx %dx %dh %dl 2 (0010) 第三个参数
%rbx 基址寄存器(Base Register) %ebx %bx %bh %bl 3 (0011) 被调用者保存
%rsp 堆栈指针寄存器(Stack Pointer) %esp %sp %spl 4(0100) 栈顶指针
%rbp 基址指针寄存器(Base Pointer) %ebp %bp %bpl 5(0101) 被调用者保存
%rsi 源变址寄存器(Source Index) %esi %si %sil 6(0110) 第二个参数
%rdi 目的变址寄存器(Destination Index) %edi %di %dil 7(0111) 第一个参数
%r8 通用 %r8d %r8w %r8b 8(1000) 第五个参数
%r9 通用 %r9d %r9w %r9b 9(1001) 第六个参数
%r10 通用 %r10d %r10w %r10b 10(1010) 调用者保存
%r11 通用 %r11d %r11w %r11b 11(1011) 调用者保存
%r12 通用 %r12d %r12w %r12b 12(1100) 被调用者保存
%r13 通用 %r13d %r13w %r13b 13(1101) 被调用者保存
%r14 通用 %r14d %r14w %r14b 14(1110) 被调用者保存
%r15 通用 %r15d %r15w %r15b 15(1111) 被调用者保存

2. 段寄存器

名称 全称 功能
%cs 代码段寄存器(Code Segment) 代码段基址
%ds 数据段寄存器(Data Segment) 默认数据段基址
%ss 堆栈段寄存器(Stack Segment) 堆栈段基址
%es 扩展段寄存器(Extra Segment) 扩展段基址
%fs 扩展段寄存器(e 后面是 f,按顺序排列,没有语义) 扩展段基址
%gs 扩展段寄存器(f 后面是 g,按顺序排列,没有语义) 扩展段基址

3. 其它寄存器

名称 全称 32位 16位 8位 编号 功能
%rip 指令指针寄存器(Instruction Pointer) %ip - - - 当前执行的指令
%rflags 标志位(Flags) %eflags - - - 标志位

4. 寄存器缩写含义

  1. %ah中的h : High
  2. %al中的l : Low
  3. %eax中的e : Extend
  4. %rax中的r : 应该是Register,不确定
  5. b : byte
  6. w : word

5. 函数调用中用到的寄存器

// 伪代码
func name(a, b, c, d, e, f) {
    return g;
}

调用函数时参数a,b,c,d,e,f依次保存到%rdi,%rsi,%rdx,%rcx,%r8,%r9中,返回值g保存到%rax

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

汇编寄存器介绍 的相关文章

  • 自己动手写操作系统第二章 pmtest1.asm分析

    34 pm inc 34 描述符 Usage Descrptor Base Limit Attr Base dd Limit dd Low 20 bits available Attr dw lower 4 bits of higher b
  • __asm void MSR_MSP(uint32_t addr) 提示:error:expected '(' after 'asm'

    SYSTEM sys sys c 33 7 error expected 39 39 before 39 void 39 ASM void MSR MSP u32 addr 在STM32中的sys c文件编译报出这个错误时 xff1a AS
  • KEIL ARM 6.12 compiler 编译__ASM 错误的解决方法

    1 问题 KEIL compiler 设置为 use default compiler version 5 可以正确编译以下汇编和C混合代码 xff0c 更改编译器为V6 12后不识别 ASM关键字 xff0c 并对汇编语法报错 替换为 A
  • 关于make zImage时出现include/asm/timex.h:15:28: asm/arch/timex.h: No such file or directory

    root 64 localhost linux cd linux 2 6 18 root 64 localhost linux 2 6 18 make zImage CHK include linux version h SYMLINK i
  • ASM汇编常用跳转指令-极速查

    作者 xff1a 逆向驿站 微信公众号 xff1a 逆向驿站 知乎 xff1a 逆向驿站 若不是老鸟 xff0c 是不是经常为各种JXX汇编跳转指令查资料 xff1f 影响效率 xff0c 更影响潜意识整体分析的 34 灵光一现 34 本公
  • vs 出现chkstk.asm问题的解决方式

    程序编译成功无报错 xff0c 执行debug时 xff0c 突然系统跳chkstk asm 报了堆栈错误 定位问题 我们到堆栈最后执行的地方 xff0c 发现是一个线程创建 这里肯定没有问题 xff0c 那么问题肯定出现在线程的初始化里
  • Android使用ASM修改函数

    目录 参考文章 Android 编译插桩 xff08 一 xff09 xff1a ASM https github com yxhuangCH CSLearn blob master android Android 20 E7 BC 96
  • 2 如何用ASM进行插桩

    假如我们现在有这样一个文件 代码如下 public class Hello public String name hello public static void main String args System out println He
  • 汇编寄存器介绍

    1 通用寄存器 名称 全称 32位 16位 8位 编号 功能 rax 累加器 Accumulator eax ax ah al 0 0000 返回值 rcx 计数器 Count Register ecx cx ch cl 1 0001 第二
  • AOP的底层实现--ASM

    在ASM的核心组件中 Opcodes接口定义了一些常量 尤其是版本号 访问标识符 字节码等信息 ClassReader用于读取Class文件 它的作用时进行Class文件的解析 并可以接受一个ClassVisitor ClassReader
  • asm常用命令汇总

    在Oracle 环境下 使用grid帐号执行 运行asmcmd进入asm命令模式 如 grid oradb node1 asmcmd ASMCMD gt ASMCMD gt du 显示指定的ASM目录下ASM文件占用的所有磁盘空间 ASMC
  • 汇编语言中各种寄存器的总结

    汇编语言中各种寄存器的总结 1 通用寄存器 数据寄存器 AX BX CX DX 指针寄存器 SP BP 变址寄存器 SI DI 2 控制寄存器 IP FLAG 3 段寄存器 CS 代码段寄存器 基本概念解释 start作用 DS 数据段寄存
  • 【8086汇编】字符串逆序的实现,附代码

    目录 引言 题目 程序思想 程序例程 程序结果 改进思路 引言 之前有本科的同学需要做一个汇编程序 简单补了补发现自己会嘻嘻嘻 题目 题目 从键盘输入任一字符串 字符数 gt 1 在下一行以相反的次序显示出来 如 输入字符串123abc 在
  • Linux系统调用指南

    Linux系统调用指南 文章是转载 但是我在后面的案例加了不少注解并debug了 如有疑问 留言交流 其实我也不懂 原文链接 blog packagecloud io https zcfy cc article the definitive
  • Java Agent与ASM字节码介绍

    Java Agent Java Agent是jdk1 5以后引入的 也叫做Java代理 javaAgent是运行方法之前的拦截器 我们利用javaAgent和ASM字节码技术 在JVM加载class二进制文件的时候 利用ASM动态的修改加载
  • 使用ASM编写 打印方法运行的时间 代码分析

    请先简单阅读下原文代码 https blog csdn net weixin 44618248 article details 107086410 可以对照源代码在阅读本文同时可以看得更清晰一些 注 以下属于个人学习 理解 如果偏颇过深 非
  • asm:常用语法

    常用语法 1 循环 1 1 使用条件跳转指令实现循环 1 2 使用LOOP指令实现循环 2 字符串 2 1 指定字符串的长度 2 2 字符串指令 2 3 重复前缀 3 数组 4 递归 5 宏 6 文件操作 7 内存管理 1 循环 1 1 使
  • asm:常见指令大全

    常见指令大全 算数指令 INC 指令 DEC 指令 ADD 指令 SUB指令 MUL指令 IMUL指令 DIV指令 IDIV指令 逻辑指令 AND指令 OR指令 XOR 指令 TEST指令 NOT指令 交换指令 xchg 比较指令 CMP指
  • 【asm基础】nasm和masm的一些区别

    差异点说明 1 nasm是区分大小写的 2 nasm中访问内存需要使用 将内存地址括起来 例如 bar equ 2 mov rax bar mov rax bar 这个才是存储地址中内容的操作 3 nasm不存储类型信息 所以也不能使用MO
  • 用汇编语言实现结构体的输入和保存

    COUNT EQU 1 ALL INPUT MACRO STRING NUM FUNCTION MOV DX OFFSET STRING MOV AH 9H INT 21H MOV DI OFFSET INFO NUM MOV AX SIZ

随机推荐

  • 力扣刷题记录(三)

    1084 销售分析III Create table If Not Exists Product product id int product name varchar 10 unit price int Create table If No
  • 机器学习——numpy逻辑回归(手写数字识别)

    二分类 识别1 7 import numpy as np import struct import matplotlib pyplot as plt import os from PIL import Image from sklearn
  • timm库安装

    按理来说 conda config append channels conda forge conda install timm 更新timm版本 pip install timm 0 5 4 python3 8 pytorch 1 11
  • HTTP与TCP的区别和联系

    https blog csdn net u013485792 article details 52100533 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别 希望通过自己的浅显理解能对初学者有所帮助 一 基
  • Kaggle入门——Titanic+随机森林(调参)+逻辑回归

    本博客记录一下自己的Kaggle入门题目 Titanic 只弄了一天 特征工程做得比较草率 结果只有0 76 不过主要是为了体验一下Kaggle竞赛的流程 以及熟悉一下Kaggle的使用 目录 1 题目相关 2 特征工程 3 随机森林 调参
  • 2021-09-08 PuTTY & Xftp-5使用密钥连接服务器

    PuTTY Xftp 5使用密钥连接服务器 所需材料 Xftp 5操作 PuTTY操作 所需材料 Xftp 5 PuTTY 密钥 服务器IP 用户名和密码 Xftp 5操作 新建会话 输入会话名称 主机IP 选择SFTP协议 方法选择Pub
  • 用python输出0到100所有能被3整除的数字_python: 输出 1~100 之间不能被 7 整除的数,每行输出 10 个数字,要求应用字符串格式化方法美化输出格式。...

    输出 1 100 之间不能被 7 整除的数 j 0 for i in range 1 101 遍历1 100取值 定义为变量 i if i 7 0 找出不能被 7 整除的数 print 3d format i end Format格式化输出
  • 伏秒积和安秒积

    伏秒平衡原则 伏秒平衡原则 在稳态工作的开关电源中电感两端的正伏秒值等于负伏秒值 安秒平衡原则 在稳态工作的开关电源中电容两端的正安秒值等于负安秒值 电容两端的电压不能突变 当电容足够大时 可认为其电压不变 电感中的电流不能突变 当电感足够
  • ./configure –prefix 命令用法

    在Linux上编译安装软件时 经常遇到 configure prefix usr这个命令 configure prefix 是什么意思呢 下面简单介绍一下 configure prefix 的用法 源码的安装一般由有这三个步骤 配置 con
  • 使用valgrind检查内存问题并且输出报告

    valgrind内存泄漏分析 是在linux中检查内存泄漏的工具 当程序编写完之后我一般都会使用它来检查一次内存问题 基本上能杜绝服务器的内存泄漏问题 当然是面对C C 这样的语言的 使用方式就是将程序编译好 然后通过valgrind来启动
  • iOS内存管理之autorelease

    当你需要延迟调用release方法的时候会使用autorelease 如 NSString fullName NSString string NSString alloc initWithFormat self firstName self
  • 基础练习 矩阵乘法

    问题描述 给定一个N阶矩阵A 输出A的M次幂 M是非负整数 例如 A 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N M 1 lt N lt 30 0 lt M lt 5 表示矩阵A的阶数和要求的幂数 接下
  • AutoMapper基本使用

    导包 AutoMapper AutoMapper Extensions Microsoft DependencyInjection 假如需要将Student映射为StudentCopy namespace WebApplication14
  • 国内比较快的DNS服务器IP汇总

    DNS是什么 DNS Domain Name System 域名系统 简单的说 就是把我们输入的网站域名翻译成IP地址的系统 比如我们想访问百度 我们会在网页里键入www baidu com 但是电脑不会理解这串字符的含义 于是就把这串字符
  • ElementUI浅尝辄止33:Form 表单

    Form 表单 日常业务中很常见 由输入框 选择器 单选框 多选框等控件组成 用以收集 校验 提交数据 常见于表单请求 登录 数据校验等业务操作中 1 如何使用 包括各种表单项 比如输入框 选择器 开关 单选框 多选框等 在 Form 组件
  • 数据结构与算法(六):图结构

    一 基本概念 二 图的存储结构 1 邻接矩阵 2 邻接表 3 十字链表 三 图的遍历 1 深度优先遍历 2 广度优先遍历 四 最小生成树 1 Prim算法 2 Kruskal算法 五 最短路径 1 Dijkstra算法 图是一种比线性表和树
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到8月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • uniapp 发布前隐私条款、用户协议等配置

    隐私类型 1 android隐私与政策提示框 2 网页版隐私条款 android ios都会用到 3 app内部隐私条款 一 android隐私与政策提示框 根据工业和信息化部关于开展APP侵害用户权益专项整治要求 App提交到应用市场必须
  • CVE-2021-41773&&CVE-2021-42013复现

    CVE 2021 41773 漏洞原理 Apache HTTP Server 是 Apache 基础开放的流行的 HTTP 服务器 在其 2 4 49 版本中 引入了一个路径体验 满足下面两个条件的 Apache 服务器将受到影响 版本等于
  • 汇编寄存器介绍

    1 通用寄存器 名称 全称 32位 16位 8位 编号 功能 rax 累加器 Accumulator eax ax ah al 0 0000 返回值 rcx 计数器 Count Register ecx cx ch cl 1 0001 第二