Giter VIP home page Giter VIP logo

elephantos's Introduction

ElephantOS

《操作系统真象还原》

小端字序&大端字序

小端字节序是数值的低字节放在内存的低地址处,数值的高字节放在内存的高地址。

大端字节序是数值的低字节放在内存的高地址处,数值的高字节放在内存的低地址。

优点:

小端:因为低位在低字节,强制转换数据型时不需要再调整字节了。

大端:有符号数,其字节高位不仅表示数值本身,还起到了符号的作用。符号位固定为第一字 节,也就是高位占据低地址,符号直接可以取出来,容易判断正负。

堆栈

堆是堆,栈是栈,大多数人之所以弄混,估计是因为大家都是那么叫的吧,不过我猜测是,因为在C语言里面栈是从高地址向低地址增减少,而堆则是从低地址向高地址增加,它们没有界限,所以到了一定的程度堆和栈一定会相遇。可能是基于这个考虑,大家才共同统一叫做堆栈吧。

实模式内存布局

起始 结束 大小 用途
FFFF0 FFFFF 16B BIOS 入口地址,此地址也属于 BIOS 代码,同样属于顶部的 640KB 字节。只是为了 强调其入口地址才单独贴出来。此处 16 字节的内容是跳转指令 jmp f000:e05b
F0000 FFFEF 64KB-16B 系统 BIOS 范围是 F0000~FFFFF 共 640KB,为说明入口地址,将上面的 16 字节从此处去掉了,所以此处终止地址是 0XFFFEF
C8000 EFFFF 160KB 映射硬件适配器的 ROM 或内存映射式 I/O
C0000 C7FFF 32KB 显示适配器 BIOS
B8000 BFFFF 32KB 用于文本模式显示适配器
B0000 B7FFF 32KB 用于黑白显示适配器
A0000 AFFFF 64KB 用于彩色显示适配器
9FC00 9FFFF 1KB EBDA(Extended BIOS Data Area)扩展 BIOS 数据区
7E00 9FBFF 622080B 约 608KB 可用区域
7C00 7DFF 512B MBR 被 BIOS 加载到此处,共 512 字节
500 7BFF 30464B 约 30KB 可用区域
400 4FF 256B BIOS Data Area(BIOS 数据区)
000 3FF 1KB Interrupt Vector Table(中断向量表)

BIOS是如何启动的

计算机加电之后CPU的CS:IP被强制初始化为0xF000:0xFFF0,即0xFFFF0的位置,这个地址就是BIOS的起始地址,0xFFFF0的地址处存在一个跳转指令,jmp far 0xF000:E05B,跳转到了0xFE05B处,这里便是BIOS正真代码的地方,接下来BIOS马不停蹄的开始自检,建立IVT中断向量表。在完成BIOS自检之后,BIOS还要做最后一件最重要的事情,就是检查最后0磁头0磁道1扇区的最后两个字节是不是0x55,0xAA,如果是就jmp 0x0000:0x7C00的地方。

0x7C00

至于为什么是0x7C00,请自行查阅这篇文章Why BIOS loads MBR into 0x7C00 in x86

关于保护模式和实模式

实模式的CPU运行环境是16位,保护模式的运行环境是32位,首先实模式是32位CPU的概念,指32位CPU处于16位运行模式下的状态,本质上还是32位的CPU。

elephantos's People

Contributors

richyeoh avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.