揭密寄存器

让我们深入了解寄存器。

寄存器是处理器用来更有效地处理数据的内部存储器存储位置。 如果不是寄存器,则处理器在想从内存中读取或写入数据时都将被迫与控制总线进行交互。

寄存器与变量相似,不同之处在于在任何给定的体系结构上都有固定数量的寄存器。 寄存器存储要处理的数据元素,而不必深入研究和访问内存。 更具体地说,每个寄存器都是CPU中存储单个数据的特殊位置。 通常,寄存器包含引用内存中其他位置的指针-寄存器之间的值移动非常常见。 32位IA-32体系结构中有十个不同的寄存器。 寄存器分为三类。

  1. 通用寄存器
  2. 控制寄存器比较和数学计算
  3. 段寄存器存储不同段(代码,数据和堆栈)的起始地址

通用寄存器可以进一步细分为以下子组:

  • 数据寄存器-算术,逻辑和其他运算
  • 指针寄存器指向堆栈和内存中的位置
  • 索引寄存器索引寻址

最常见的32位寄存器是EAX,EBX,ECX和EDX。

寄存器有效利用空间。 实际上,下半部分的32位寄存器可用作16或8位寄存器。

例如,AX是主要的累加器寄存器。 它通常用于输入/输出和大多数算术指令。 例如,在一个乘法运算中,一个操作数根据大小或特定操作数存储在EAX或AX或AL寄存器中。

一个特别重要的通用寄存器是eax寄存器。 Eax有两个常见用途,用于存储函数的返回值和作为某些计算的特殊寄存器。 Eax是所谓的易失性寄存器。 也就是说,一旦函数返回,就不能保证保留其值。 这意味着在函数返回后,处理器可以使用该寄存器空间来存储另一段数据。 但是,在函数范围内,eax在返回之前被设置为函数的返回值。 这是一个设置为返回3的函数:

return 3;  // Return the value 3

这是汇编中的相同代码:

mov eax, 3 ; Set eax (the return value) to 3
ret ; Return

另一个重要的通用寄存器是esp寄存器。 esp寄存器存储指向堆栈顶部的指针。 请注意,堆栈在虚拟内存中朝堆的方向向下增长。

希望您对寄存器更放心。 简而言之,它们只是CPU中为特定类型的数据保留的特殊位置。 当函数求值并最终终止时,值会不断变化。

From: https://hackernoon.com/demystifying-registers-23dea1e83702

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值