ARM64汇编学习笔记一

2018-12-23 14:37

ARM64汇编学习笔记一



  每一个 CPU 芯片都有许多管脚,这些管脚和总线相连,CPU 通过总线跟外部器件进行交互

  内存地址空间的大小受CPU地址总线个不同的内存单元(内存地址范围0x00000~0xFFFFF),所以8086的内存空间大小为1MB

  0xA0000~0xBFFFF:向显存中写入数据,这些数据会被显卡输出到显示器。可读可写

  数学上的数字,是没有大小限制的,可以无限的大。但在计算机中,由于受硬件的制约,数据都是有长度限制的(我们称为数据宽度),超过最多宽度的数据会被丢弃。

  字(Word): 1个字由2个字节组成(16位),这2个字节分别称为高字节和低字节.

ARM64汇编学习笔记一

  对程序员来说,CPU中最主要部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制

  ARM64拥有有31个64位的通用寄存器 x0 到 x30,这些寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途)

  那么w0 到 w28 这些是32位的. 因为64位CPU可以兼容32位.所以可以只使用64位寄存器的低32位

ARM64汇编学习笔记一

  通常,CPU会先将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行运算

  假设内存中有块红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间

ARM64汇编学习笔记一

  CPU首先会将红色内存空间的值放到X0寄存器中:mov X0,红色内存空间

  CPU在工作的时候把有的信息看做指令,有的信息看做数据,为同样的信息赋予了不同的意义

  如果内存中的某段内容曾被CPU执行过,那么它所在的内存单元必然被pc指向过

  CPU从何处执行指令是由pc中的内容决定的,我们可以通过改变pc的内容来控制CPU执行目标指令

  ARM64提供了一个mov指令(传送指令),可以用来修改大部分寄存器的值,比如

  ARM64提供了另外的指令来修改pc的值,这些指令统称为转移指令,最简单的是bl指令