Fork me on GitHub

寄存器和内存

在逆向的过程中,大家应该经常听到寄存器、内存这两个概念,所以就简单的归纳了一下。对于逆向过程中,以下的知识差不多够我们使用了。如果想要了解的更深一点,各位只能查阅相关书籍了。

概念

寄存器是CPU上的一部分,有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址

内存是挂在CPU外面的数据总线上的,访问内存时要在CPU的寄存器填上地址,再执行相应的汇编指令,这时CPU会在数据总线上生成读取或写入内存数据的时钟信号,最终内存的内容会被CPU寄存器的内容更新(写入)或被读入CPU的寄存器(读取)

区别

读取速度寄存器(register)最快,内存其次,最慢的是硬盘。

  • 原因一:距离不同

距离不是主要因素,尤其针对手机。内存离CPU比较远,所以要耗费更长的时间读取。

  • 原因二:工作方式不同

寄存器的工作方式很简单:

(1)找到相关的位

(2)读取这些位

内存的工作方式就要复杂得多:

(1)找到数据的指针。(指针可能存放在寄存器内,所以这一步就已经包括寄存器的全部工作了)

(2)将指针送往内存管理单元(MMU),由MMU将虚拟的内存地址翻译成实际的物理地址。

(3)将物理地址送往内存控制器(memory controller),由内存控制器找出该地址在哪一根内存插槽(bank)上。

(4)确定数据在哪一个内存块(chunk)上,从该块读取数据。

(5)数据先送回内存控制器,再送回CPU,然后开始使用。

0%