🧼

0.11 源码阅读(学习)

 
参考文章地址

整体加载图

notion image

汇编执行令

  • mov: 赋值
    • movl: mov long 四个字节,告知编译器的。
  • sub : 相减
    • sub a, a 清零操作
  • xor: 异或
    • xor a,a 清零操作
  • jmpi: 段间跳转指令
  • pushf: 标志寄存器压栈
  • popf:标志寄存器出栈
  • cld: 将寄存器DF标志位置0
  • std: 将寄存器DF标志位置1
  • rep: 重复
  • ret: 返回
  • call: 函数调用

寄存器

intel 访问内存分为:

  • 代码
    • 对应的寄存其为 代码段寄存器(cs)
  • 数据
    • 数据段寄存器(ds)
    • 栈段寄存器(ss)
白话描述:
cs:eip 表示了我们要执行哪里的代码。
ds:xxx 表示了我们要访问哪里的数据。
ss:esp 表示了我们的栈顶地址在哪里。

其它寄存器:

  • idtr: 中断描述符表 idt
  • gdtr:全局描述符表 gdt
  • TSS:任务状态段描述符
  • LDT: 局部描述符
  • CR0: 机器状态字寄存器
  • DF(Direction Flag): 方向控制位
  • esp: 栈顶地址
  • cs:eip:CPU 下一步准备执行的指令
 

描述表:

  • idt : 中断描述表,存放在idtr中。
  • gdt: 全局描述表,存放在gdtr中。

CR0:

notion image
31位:PG-分页机制标志位
30-19位: 保留位
0位:PE-保护模式开启标志位
 

CR3:

CR3含有存放页目录表页面的物理地址,因此CR3也被称为PDBR

专业名词

  • MMU:内存管理单元 (有时也叫 PMMU,分页内存管理单元)
  • IDT: Interrupt Description Table 中断描述表
  • IDTR: Interrupt Description Table Register 中断描述表寄存器
  • GDT: Global Description Table 全局描述表
  • GDTR: Global Description Table Register 全局描述表寄存器
 
代码目录
 
GitHub