现在的位置: 首页 > 技术文章 > 操作系统 > 正文

《自己动手写操作系统》杂记一

2014年02月10日 操作系统 ⁄ 共 730字 ⁄ 字号 《自己动手写操作系统》杂记一已关闭评论 ⁄ 阅读 1,784 次

《自己动手写操作系统》学习笔记目录(持续更新)  http://www.techbulo.com/832.html

 

os

os

汇编【nasm】

标签和变量是一样的, 变量名代表了变量的地址,而[标签]表示值

$表示当前行呗汇编后的地址

$$表示 一个节被汇编后的起始地址

ret和retf指令

ret 用栈中数据改IP内容,近转移

retf用栈中数据同时改CS,IP,远转移

用汇编解释

ret   ->  pop ip

retf  ->  pop ip

pop cs

编写汇编程序的思维方式:

汇编程序是由段构成,所以编写汇编代码要摒弃高级语言(C语言)的程序函数构成。

C语言将程序分解为若干函数

汇编语言将程序分解为若干段,段与段之间通过跳转实现(函数的实现其实就是CALL,JMP等跳转功能)

高效交换元素

PUSH BUF1

PUSH BUF2

POP BUF1

POP BUF2

能够实现两个字型存储单元BUF1、BUF2的数据交换。

段具体的寻址范围跟你使用的存储器寻址方式有关。 

    1】在实地址模式下,由于偏移地址为16位的数,故每一段的最大寻址空间是64K,且允许段重叠。
    2】保护模式下,偏移地址达到了32位,故每段的最大寻址范围可达4G。

    最后,段的起始地址是由操作系统完成分配的。还有,段类型还包括有ES(附加段),常用于串的相关操作。

物理内存是实实在在的内存,它与虚拟内存相对,物理内存被分页,其实就像一本书里面的好多页纸,每张纸上记录了不同的信息,物理内存被分页,对于32位的CPU来说,每个物理页大小是4K。对于每一个物理页,系统使用一个24字节长的结构来保存它的相关信息。

×