分类: LINUX
2017-02-26 11:56:45
注意:此课程(孟宁老师 Linux内核分析课程 )中未作特别说明的情况下我们都将以X86架构32位机器作为目标平台。
通用寄存器:
AH AL AX EAX 累加器
BH BL BX EBX 基地址寄存器
CH CL CX ECX 计数寄存器
DH DL DX EDX 数据寄存器
BP EBP 堆栈基指针
SI ESI DI EDI 变址寄存器
SP ESP 堆栈顶寄存器
段寄存器:
CS 代码段寄存器
DS 数据段寄存器
ES 附加段寄存器
SS 堆栈段寄存器
FS 附加段寄存器
GS 附加段寄存器
CPU在实际取指令时根据CS :EIP来准确定位一个指令
每个进程都有自己的堆栈
标志寄存器(EFLAGS register) :标识当前状态
指令指针寄存器(EIP)
接下来,介绍一下汇编指令及几种内存寻址方式:
指令 | 实际效果 | 寻址方式 |
movl %eax, %edx | edx = eax | 寄存器寻址 |
movl $0x123, %edx | edx = 0x123 | 立即数寻址 |
movl 0x123, %edx | edx=*(int32_t*)0x123 | 直接寻址 |
movl (%ebx), %edx | edx=*(int32_t*)ebx | 间接寻址 |
movl 4(%ebx), %edx | edx=*(int32_t*)(ebx+4) | 变址寻址 |
pushl %eax |
subl $4,%esp
|
|
popl %eax |
movl (%esp),%eax
|
|
call 0x12345 |
pushl %eip(*) |
|
ret |
popl %eip(*) |
|
点击(此处)折叠或打开