zoukankan      html  css  js  c++  java
  • 自己动手写操作系统(1)

    发现对代码研究得越深入,兴趣就越大,当习惯看.net的反编译代码和开源的代码后,对操作系统也产生了兴趣,想知道操作系统是怎么运作的。微软的操作系统是无法研究的啦,只有研究开源的linux了。

    首先,下载一个80x86的汇编器 NASM

    http://sourceforge.net/projects/nasm/files/

    NASM是一个为可移植性与模块化而设计的一个80x86的汇编器。它支持相当多
    的目标文件格式,包括Linux和'NetBSD/FreeBSD','a.out','ELF','COFF',微软16
    位的'OBJ'和'Win32'。它还可以输出纯二进制文件。它的语法设计得相当的简
    洁易懂,和Intel语法相似但更简单。它支持'Pentium','P6','MMX','3DNow!',
    'SSE' and 'SSE2'指令集,

    1.1.1 为什么还需要一个汇编器?

    NASM当初被设计出来的想法是'comp.lang.asm.x86'(或者可能是'alt.lang.asm'
    ,我忘了),从本质上讲,是因为没有一个好的免费的x86系例的汇编器可以使用,
    所以,必须有人来写一个。

    (*)'a86'不错,但不是免费的,而且你不可能得到32位代码编写的功能,除非你
    付费,它只使用在dos上。

    (*) 'gas'是免费的,而且在dos下和unix下都可以使用,但是它是作为'gcc'的一
    个后台而设计的,并不是很好,'gcc'一直就提供给它绝对正确的代码,所以它的
    错误检测功能相当弱,还有就是对于任何一个想真正利用它写点东西的人来讲,
    它的语法简直太可怕了,并且你无法在里面写正确的16位代码。

    (*) 'as86'是专门为Minix和Linux设计的,但看上去并没有很多文档可以参考。

    (*) 'MASM'不是很好,并且相当贵,还且只能运行在DOS下。

    (*) 'TASM'好一些,但却极入与MASM保持兼容,这就意味着无数的伪操作码和繁琐
    的约定,并且它的语法本质上就是MASM的,伴随着的就是一些自相矛盾和奇怪的
    东西。它也是相当贵的,并且只能运行在DOS下。

    所以,只有NASM才能使您愉悦得编程。目前,它仍在原型设计阶段-我们不期望它
    能够超越所有的这些汇编器。

  • 相关阅读:
    Linq之旅:Linq入门详解(Linq to Objects)(转)
    第四章 禅坐和外相的修行
    第三章 生活就是我们的修行
    第二章 更正我们的知见
    第一章 明了佛陀的教导(宁静的森林水池)
    第二章 取其一半
    你的程序员是在努力工作还是在偷懒?
    给JavaScript初学者的24条最佳实践
    简单理解Socket
    oracle18c linux x86-64 install 杂记
  • 原文地址:https://www.cnblogs.com/wangchunming/p/2840158.html
Copyright © 2011-2022 走看看