orange's一个操作系统的实现--学习过程 第三章:a 为什么需要认识IA32架构IntelCPU保护模式
第三章主要是讲IA32架构IntelCPU的相关内容,因为只有了解了CPU的一些特性,才能够写出操作系统,这也是操作系统为什么和硬件CPU有关系的原因。同样也是因为只是为了了解CPU的特性,第三章主要就是通过汇编代码去熟悉这些特性,因此借助DOS去执行也无妨。
从汇编源码编译成执行文件,所有变量和地址都是按照线性地址编译出来的。虽然实模式和保护模式的寻址方法不一样,但是只要他们计算的线性地址结果是一样的,那获取的内容也就是一样的。保护模式的优势就是通过分段的方法(即段式存储机制)与汇编源码的SECTION可以对应起来,从汇编源码的编写角度来看就简单了很多。
从汇编源码生成的执行程序是一个纯二进制文件,就是程序执行的内存影像和二进制文件是一样的。并且执行程序文件的汇编指令是按照线性地址一直排下去的。执行程序在内存的起始线性地址是按照约定放置的,例如com文件起始地址是0100h。执行程序的数据段地址可以是通过源码设置的。
汇编程序可以选择2种执行方式
(1,在虚拟机直接执行,要求编译出来的程序不能大于512字节;显然通过2,在DOS环境下执行更好一些)
(我这里使用DOSBox的环境,没有使用虚拟机的FreeDos,不需要通过linux把二进制程序复制到软盘上让FreeDos去识别)
1,在虚拟机直接执行
按照起始地址org 07c00h编译成二进制程序,复制到引导软盘下,在虚拟机下开机执行。
nasm pmtest1.asm -o pmtest1.bin
dd if=pmtest1.bin of=a.img bs=512 count=1 conv=notrunc
2,在DOS环境下执行
按照起始地址org 0100h编译成二进制程序,直接在DOS下执行即可。
nasm pmtest1b.asm -o pmtest1.com
在DOS环境下执行 pmtest1.com
orange's一个操作系统的实现--学习过程 第三章:a 为什么需要认识IA32架构IntelCPU保护模式相关推荐
- 《Orange’s 一个操作系统的实现》3.保护模式3----DOS加载.EXE过程
在<<Orange's 一个操作系统的实现>>一书中有时使用了org 0100h,为何是0100h?因为书中的例子是为了突破引导扇区512字节的限制, 而将asm文件编译为.c ...
- 《Orange’s 一个操作系统的实现》3.保护模式7-特权级转移(通过调用门转移目标段-无特权级转换)...
在上次的代码基础上,添加一个代码段作为通过调用门转移的目标段.了解一下调用的工作方法,代码分析如下: <<红色标识部分为新增代码>> ; =================== ...
- Orange‘s’ 一个操作系统的实现
突然想要随时记录一下实验过程中的各种问题,因此有了此文档: 由于是中途开始的,所以就偷懒直接跳过了vm.ubuntu32位16.04.bochs2.6.8.nasm的安装,下面开始正文内容: 2022 ...
- 《Orange's 一个操作系统的实现》学习笔记--LDT
LDT(Local Descriptor Table)它和GDT差不多,都是描述符表(Descriptor Table)区别仅仅在于全局(Global)和局部(Local)的不同.局部描述符表可以有若 ...
- 《Orange’s 一个操作系统的实现》3.保护模式4----LDT(Local Descriptor Table)
还是在原有代码基础上进行修改,加入LDT的使用,代码分析如下(红色部分为新增代码): 本程序是在原有完成大内存读写测试完成后,调用局部任务显示字符L ; ======================= ...
- 《Orange’s 一个操作系统的实现》3.保护模式1----pm.inc分析
1.pm.inc定义了描述符.选择子及相关位数的取值 ; 描述符图示 ; 图示一 ; ; ------ ┏━━┳━━┓高地址 ; ┃ 7 ┃ 段 ┃ ; ┣━━┫ ...
- 《Orange’s 一个操作系统的实现》1.搭建操作系统开发环境
书中给出了两种环境:windows和linux,平台选择根据自己喜好.本人这里选择ubuntu10.04+virtualbox作为开发平台. 1.下载.安装VirtualBox http:// ...
- Orange‘s 一个操作系统的实现--Bochs遇到的问题
1.Message: dlopen failed for module 'x': file not found 这是未安装bochs-x的缘故 解决方案: sudo apt-get install b ...
- 2.ZooKeeper客户端Curator「第三章 ZooKeeper Java客户端」「架构之路ZooKeeper理论和实战」
前言 上一篇文章 介绍了zookeeper原生API的使用,使用过原生API不得不说,有很多的问题,比如:不能递归创建和删除节点.Watcher只能使用一次.还有很多可以解决分布式应用问题的api(比 ...
- IA-32系统编程指南 - 第三章 保护模式的内存管理【2】
第三章 保护模式的内存管理[2] [作者:lion3875 原创文章 参考文献<Intel 64 and IA-32 system programming guide>] ...
最新文章
- POJ3040给奶牛发工资
- Linux 小知识翻译 - 「NTP」
- HOOK -- IAT HOOK 本进程MessageBox
- Ubuntu16.04下面的vs code出现Unable to activate CppCheck analyzer
- python 框架 优化_python+unittest框架第六天unittest之优化测试报告
- mysql 索引表的应用_MySQL查询优化之索引的应用详解
- 一年级大括号问题专项训练_新人教版一年级数学上册5.9解决问题(减法)微课视频辅导|课后练习...
- 三菱FX Q FX5U PLC 程序加密,使用ST结构化文
- 种子点生长算法下——三维种子点生长
- c语言常量指什么作用,c语言字符常量是什么
- ue4蓝图碰撞检测的类型_UE4蓝图碰撞检测解析
- 【开箱即用】HTML5教程
- GIT 中如何打标签
- 战神引擎各类修改地址中文注释汇总
- android 个人云存储,个人云存储app-个人云安卓版-地之图下载
- 2023-spring 2.探险营地 — 字符串
- 很抱歉,EXCEL遇到错误,使其无法正常工作,因此需要关闭EXCEL。是否希望我们立即修复?...
- 使用cmd查看端口号
- 4.1-知识图谱在金融领域中的应用实践
- 从Windchill说PLM的入门指南——(听听不专业小编的胡说八道)
热门文章
- 如何给服务器文件设置权限,如何设置服务器文件权限
- 已经更CSS《一篇文章让你从HTML零基础入门前端开发》12.22
- 应急响应中的入侵排查和权限维持
- [架构之路-32]:目标系统 - 系统软件 - Linux OS用户空间程序的启动、关闭、监管 -- init进程
- 让创意设计更加简单:在线设计平台Canva登陆中国
- 用pyqt原生功能实现自由屏幕截图
- mongodb 使用$lookup做多表关联处理
- 桥接路由器总是掉线_tplink路由器桥接掉线怎么办
- 为什么要创建SRT?
- html中fixed属性,CSSposition属性中:fixed使用详解