《庖丁解牛Linux内核》笔记之:汇编基础
下面的说法都来自x86CPU寄存器。
值的不同表示方法
%eax
类似这种就是直接操作该寄存器,效果类似于C语言中的指针:*
和&
。
(%eax)
这里代表()
中的内容是一块地址,而(%eax)
代表直接读取其中的地址对应的值。
$123
这里的代表的是具体的值,即十进制的123。
123
这种只有一个数值的,代表其本身是一个地址。
常见寄存器
- eax:累加寄存器,主要用来临时存放运算结果
- ebx:基地址寄存器,顾名思义,这里存储的就是一个内存地址,然后在其他指令中可以通过在该基础地址上进行加减,来获取其他地址
- ecx:计数寄存器,看不懂介绍,等遇到再说吧
- edx:数据寄存器,顾名思义,就是用来存放数据的
- ebp:堆栈基指针,顾名思义,就是用来存放堆栈的地址的
- esp:堆栈顶指针,顾名思义,就是用来存放栈顶的内存地址
- esi:变址寄存器,看不懂介绍
- edi:变址寄存器
- eip:CPU指令寄存器,即保存当前CPU执行的指令。