实模式内存分布

1M内存映射:

  00000 003FF IVT    Interrupt Vector Table (中断向量表)
  00400 004FF BDA    BIOS Data Area (BIOS数据区)
  00500 00501 PRTSCR 1st byte is Print Screen Status Byte (第一字节是打印屏幕状
态字节)
  00501 9xxxx OS     OS specific (操作系统专用区)
  07C00 07CFF BOOT   Where Boot Sectors are loaded by the BIOS (BIOS装载引导扇
区的区域)
  9xxxx 9FFFF EBDA   Extended BIOS Data Area, varies in size (at least 1KB) (扩
展BIOS数据区,大小不等,不小于1KB)
  A0000 AFFFF VIDEO  Used by the Video Adapter (Graphics Mode) (用于彩色显示适
配器)
  B0000 B7FFF VIDEO  Used by the Video Adapter (Monochrome) (用于黑白显示适配器
)
  B8000 BFFFF VIDEO  Used by the Video Adapter (Textmode) (用于文本模式显示适配
器)
  C0000 C7FFF VIDEO  Used by the Video BIOS (用于显示适配器BIOS)
  C8000 EFFFF ROM    May be used by adapter ROMS or as memory mapped I/O (可用
于适配器ROM或内存映射式I/O)
  F0000 FFFFF BIOS   System BIOS, 32K (starts at F8000) or 64K (系统BIOS,32k<从
F8000开始>或者64K)

 

FreeLoader内存布局 
0000:0000 - 0000:0FFF:    中断向量表和BIOS数据

0000:1000 - 0000:6FFF:    实模式的栈内存

0000:7000 - 0000:7FFF:    命令行 (multiboot)

0000:8000 - xxxx:xxxx: FreeLoader程序和数据

xxxx:xxxx - 7000:7FFF:        随机分配的堆内存

7000:8000 - 7000:FFFF:    保护模式的栈内存

8000:0000 - 8000:FFFF:    文件系统读取的内存缓冲区

9000:0000 - 9000:FFFF:    BIOS 中断13h读取数据缓冲区

A000:0000 - FFFF:FFFF:   保留

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的现,而无需花费太多时间在底层功能的现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
### 回答1: 这段视频介绍了x86汇编语言下,如何从模式切换到保护模式。 首先,视频介绍了模式的特点和局限性。模式下,CPU只能寻址1MB的内存空间,同时所有的程序都需要运行在同一个特权级下,对于大型程序和操作系统而言非常不利。 接着,视频介绍了如何切换到保护模式。保护模式下,CPU可以通过基地址和段选择器来访问4GB的内存空间,同时程序可以运行在不同的特权级下。切换到保护模式的关键步骤包括:设置GDT和IDT表、开启A20线、设置CR0寄存器、跳转到保护模式代码段等。 最后,视频演示了如何编写汇编代码来现保护模式的切换。代码包括定义GDT和IDT表、开启A20线的函数、设置CR0寄存器的函数,以及跳转到保护模式代码段的函数。通过这段视频的学习,我们了解了从模式到保护模式的切换原理和现方法,对于深入理解操作系统和底层编程有着重要的意义。 ### 回答2: x86汇编语言是计算机的底层语言,包括模式和保护模式两种运行模式模式是早期计算机的一种运行模式,它的内存访问方式简单,容易理解。在模式下,整个物理内存空间可以直接寻址,但同时也带来一些安全问题。为了保护内存和提高计算机运行的稳定性,最终出现了保护模式。 保护模式是x86汇编语言的一种运行模式,它可以让计算机利用内存管理单元(MMU)来对内存进行隔离和保护。在保护模式下,内存空间被分为多个段,并为每个段赋予相应的权限和特权级别。这样可以有效保护计算机的内存空间,避免程序之间相互侵入和破坏。 保护模式的运行需要经过一系列的初始化,包括:打开地址线扩展、禁用中断、打开分页等操作。这些操作可以通过设置控制寄存器和描述符表来现。 在保护模式下,程序运行的特权级别由RPL(Requested Privilege Level)和CPL(Current Privilege Level)两个标志位来控制。CPL位于代码段和数据段的选择子中,代表当前运行程序的权限级别,而RPL位于代码选择子和数据选择子中,用来判断程序是否有权访问对应的段。 在保护模式下,虚拟地址需要经过地址转换才能转换成物理地址,这需要使用页表来对虚拟地址进行映射。页表和页目录存储在内存中,需要通过控制寄存器来取出相应的值进行地址转换。 总之,x86汇编语言的模式和保护模式都有各自的特点和应用场合,学习x86汇编语言需要深入理解这两种运行模式的原理和现过程。 ### 回答3: x86汇编语言是计算机硬件操作指令的编程语言,是本质上依赖于CPU架构和指令集的语言。根据其中对内存的处理方式的不同,x86汇编语言可以分为模式和保护模式模式是指CPU直接访问物理内存,地址总线是20位,内存寻址空间最大为1MB。模式下的程序可以访问系统资源,例如中断处理、内存读写等操作。但模式内存空间过小,程序出错容易导致系统崩溃。 保护模式是一种更加灵活和安全的工作状态,地址总线扩展到了32位,理论内存访问空间可以达到4GB以上。保护模式内存被划分为多个段,程序可以在相互独立的段之间进行操作,可以在段级别上分配权限,从而提高代码的安全性。同时,保护模式也支持虚存技术,通过硬件的支持,可以将程序的际运行数据放入物理内存和虚拟内存的组合体内,从而可以利用硬盘来进行虚拟内存的支持,使得多个程序在同一系统上运行时不会相互干扰,同时提高系统的稳定性。 因此,在现代操作系统上,保护模式是必需的。x86汇编语言需要不同的功能选项来在模式和保护模式之间进行转换。在视频中,我们可以学习如何从模式切换到保护模式,并掌握如何在保护模式下使用不同的功能选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值