Intel寄存器名称解释及用途,%eax%ebx等都是什么意思

参考资料:https://www.swansontec.com/sregisters.html x86家族的CPU都有8个通用寄存器,每一个寄存器的名字都是一组单词的缩写。就连这四个分别叫做%eax,%ebx,%ecx,%edx的寄存器,尽管看似是随意按照abcd的字母排序的,其实这a,b,c,d也分别是四个单词的缩写。 %——百分号表示这是一个寄存器。 末尾的x或许是register的缩写?(这句是我猜的) e表示extend 意思是扩展到了32位。因为以前的intel寄存器都是16位的,它们的名字就是%ax,%bx等等,所以扩展到32位之后就在开头加上一个e,改名叫%eax,%ebx等

1. EAX - Accumulator Register(累加器)

当你写一个函数,最后返回一个值x(return x),那么这个x就要被存到%eax. 当你要把一个数字扩展成64位,那么%eax存这个数的低32位,%edx存这个数的高32位。

2. EBX - Base Register(基地址寄存器)

在所有的通用寄存器里,EBX是唯一一个没有什么重要的专门用途的寄存器,你可以用它存一个计算过程中的中间变量,或者一个指针等等。

3. ECX - Counter Register(计数寄存器)

在x86中,ecx就是那个程序中无处不在的计数变量i,x86中每一个计数相关的指令都要用到ecx。

4. EDX - Data Register(数据寄存器)

在除了累加器之外的其余七个通用寄存器里,edx与累加器的联系最为紧密。(当你要把一个数字扩展成64位,那么%eax存这个数的低32位,%edx存这个数的高32位。) 后面四个,大家可以看文章开头的资料,我就懒得翻译了。

5. ESI - Source Index
6. EDI - Destination Index
7. EBP - Base Pointer
8. ESP - Stack Pointer

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

GO语言标准库概览

在Go语言五周系列教程的最后一部分中,我们将带领大家一起来浏览一下Go语言丰富的标准库。 Go标准库包含了大量包,提供了丰富广泛的功能特性。这里提供了概览仅仅是...

7536
来自专栏皮皮之路

【JDK1.8】JUC——LockSupport

972
来自专栏分布式系统进阶

Kafka中的时间轮Kafka源码分析-汇总

将TimerTask对象绑定到 TimerTaskEntry上 如果这个TimerTask对象之前已经绑定到了一个 TimerTaskEntry上, 先调用t...

2161
来自专栏Golang语言社区

GO语言标准库概览

在Go语言五周系列教程的最后一部分中,我们将带领大家一起来浏览一下Go语言丰富的标准库。 Go标准库包含了大量包,提供了丰富广泛的功能特性。这里提供了概览仅仅是...

38710
来自专栏偏前端工程师的驿站

前端魔法堂——调用栈,异常实例中的宝藏

1483
来自专栏从零开始学自动化测试

python笔记8-多线程threading之封装式

前言 冬天到了,小伙伴们最喜欢和好朋友一起吃火锅了,那么这种多个人同时吃火锅的场景如何用python实现呢? 一、执行函数 1.先写一个执行函数,用来实现做某件...

2884
来自专栏精讲JAVA

JDK 10 的 109 项新特性

虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的发布节奏,JDK10 已经到达发布候选里程碑阶段。

1642
来自专栏SDNLAB

P4语言编程详解

在文章《P4:开创数据平面可编程时代》中介绍了P4的架构特性、交换机结构以及P4程序的工作原理,本篇为大家介绍P4语言编码及规范,从编码角度去理解P4程序的工作...

7995
来自专栏Golang语言社区

网络后台开发面试题

1.C++模板的作用。 将算法与具体对象分离,与类型无关,通用,节省精力 2.socket编程,如果client断电了,服务器如何快速知道??? 有以下几个...

6538
来自专栏Java架构沉思录

优雅实现延时任务之zookeeper篇

在《优雅实现延时任务之Redis篇》一文中提到,实现延时任务的关键点,是要存储任务的描述和任务的执行时间,还要能根据任务执行时间进行排序,那么我们可不可以使用z...

3923

扫码关注云+社区

领取腾讯云代金券