黄二玉+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”
预备知识
cup的内部寄存器
- 通用寄存器:
数据寄存器: AX,BX,CX,DX
地址指针和变址寄存器:SP,BP,SI,DI - 段寄存器:CS,DS,SS,ES
- 指令指针 IP
- 标志寄存器 FLAGS
在不同型号的机器上,用于表示的字母和寄存器的种类可能不同,比如在32位机器上,AX被表示成EAX,BX被表示成EBX,还有的机器上可能没有段寄存器。
寻址方式
- 直接寻址:直接给出有效地址
例如:
movl 0x3A134B,%edx //这里的%edx表示edx寄存器,movl中的l表示32位 - 立即寻址:直接给出操作数
例如:movl $3A134B ,%edx //这里的美元符号表示这是一个数,不是地址 - 寄存器寻址 :操作的数包含在寄存器中
例如:
movl %eax,%ebx //把ax寄存器里面的数放到bx中 - 寄存器间接寻址:寄存器中给出的不是操作数而是操作数的地址
例如:
movl (%eax),%ebx //这里的括号表示根据括号内提供的地址的一种寻找操作&#