Project Oberon

Project Oberon  http://www.projectoberon.com/

Project Oberon

28.11.2018 / 11.12.2018

license.txt         FAQ

Project Oberon is a design for a complete desktop computer system from scratch.  Its simplicity and clarity enables a single person to know and implement the whole system, while still providing enough power to make it useful and usable in a production environment. This website contains information and resources for exploring and using the system.  The project is fully described in Project Oberon: The Design of an Operating System, a Compiler, and a Computer — written by the designers, Niklaus Wirth and Jürg Gutknecht. The second (2013) edition of the book and source code are published on Prof. Wirth's website. We provide links to the original material here, and local zipped copies, with kind permission from the authors.

The Oberon System

Book Chapters 1-9 pdf mirror

Using Oberon pdf mirror

Inner Core Source zip

Outer Core Source zip

Tools & Fonts zip

Oberon RISC Emulator (Peter De Wachter)

Windows

Applications

Book Chapters 10-15 pdf mirror

Network Source zip

SCC Net

Compiler Source zip

ORS ORB ORG ORP ORTool

Oberon-07 Langage pdf mirror

Graphics Editor Source zip

Tools, Fonts & Libraries zip

The RISC Computer

Book Chapters 16-17 pdf mirror

RISC Architecture pdf mirror

RISC Design pdf mirror

OberonStation Verilog Source zip

Digilent Spartan 3 Verilog Source zip

SD-Card raw image zip

-----------------------------------------------------

来源 https://github.com/vishaps/voc

ѴishapOberon

ѴishapOberon是Oberon-2语言和库的免费开源(GPLv3)实现,可用于Linux,BSD,Android,Mac和Windows等传统操作系统。

Vishap的Oberon编译器(voc)使用C后端(gcc,clang或msc)在Unix,Mac或Windows下编译Oberon程序。Vishap Oberon包括来自Ulm,oo2c和Ofront Oberon编译器的库,以及符合Oakwood Guide for Oberon-2编译器的默认库。

内容

安装
    编译“Hello”应用程序
    许可证
    平台支持和移植
    语言支持和库
    历史
    路线图
    贡献者
    名称“ѴishapOberon”的起源
    参考

安装

使用以下简单步骤安装Oberon编译器和库很容易:

  1. 安装先决条件,如git,gcc,静态C库,diff utils。
  2. 克隆存储库并运行'make full'。
  3. (可选)使用“make install”安装到系统目录,例如/ opt或/ usr / local / share。
  4. 设置PATH变量以包含编译器二进制文件。

这些详述如下:

1.安装先决条件

平台
Debian / Ubuntu / Mint ...... apt-get install git
Fedora / RHEL / CentOS ...... yum install git gcc glibc-staticdnf而不是yum最近的Fedoras)
FreeBSD的/ OpenBSD系统/ NetBSD的 pkg install git
OpenSUSE系统 zypper install gcc git-core make glibc-devel-static
Cygwin的 使用setup-x86 [_x64]添加包git,make,diffutils和gcc-core
达尔文 在命令行键入'git'并接受安装它的提示。

更多详细信息,包括MinGW和MS C,在安装

2.克隆并构建编译器和库

  1. git clone https://github.com/vishaps/voc
  2. cd voc
  3. make full

make full 将在voc / install的本地存储库下创建一个安装目录。

mmake full运行ldconfig以配置链接器以在voc / install中查找库,但您需要自己更新程序搜索PATH(请参阅下面的步骤4)。

3.(可选)安装到系统目录

运行make install作为根目录下复制VOC /安装到相应的目录,你的操作系统如下:

系统 make install把安装
Linux的 /opt/voc
BSD /usr/local/share/voc
视窗 请参阅Windows安装
Termux /data/data/com.termux/files/opt/voc

make installldconfg使用新库位置进行更新。

4.设置PATH环境变量

由于不同系统和用户管理其PATH的方式有很多种,因此我们会让您更新路径以包含编译器二进制文件。

双方make fullmake install就具体设置到系统路径显示的说明。

供参考,这将是:

安装选择 设置路径
只是 make full export PATH="your-repository-clone/install/bin:$PATH"
make install 在Linux上 export PATH="/opt/voc/bin:$PATH"
make install 在BSD上 export PATH="/usr/local/share/voc/bin:$PATH"
make install 在Windows上 请参阅Windows安装
make install 在Termux上 export PATH="/data/data/com.termux/files/opt/voc/bin:$PATH"

另请参阅安装

编译器根据加载的位置查找安装的其余部分。

'Hello'应用程序

附加到Oberon.Log的任何内容都会自动写入stdout,因此以下常规Oberon程序将显示“Hello。”:

MODULE hello;
IMPORT Oberon, Texts;
VAR W: Texts.Writer;
BEGIN
Texts.OpenWriter(W);
Texts.WriteString(W, "Hello."); Texts.WriteLn(W);
Texts.Append(Oberon.Log, W.buf)
END hello.

或者,Oakwood模块Out可用于直接写入stdout:

MODULE hello;
IMPORT Out;
BEGIN
Out.String("Hello."); Out.Ln
END hello.

编译如下:

voc hello.mod -m

-m参数告诉voc这是一个主模块,并生成一个可执行的二进制文件。

像往常一样在Linux(./hello)或Windows(hello)上执行。

有关编译的更多详细信息,请参阅编译

查看包含模块的接口。

要查看模块接口的定义,请使用“showdef”程序。

$ showdef Out
DEFINITION Out; VAR
IsConsole-: BOOLEAN; PROCEDURE Char(ch: CHAR);
PROCEDURE Flush;
PROCEDURE Int(x: INT64; n: INT64);
PROCEDURE Ln;
PROCEDURE LongReal(x: LONGREAL; n: INT16);
PROCEDURE Open;
PROCEDURE Real(x: REAL; n: INT16);
PROCEDURE String(str: ARRAY OF CHAR); END Out.

执照

Vishap Oberon的前端和C后端引擎是Josef Templ的Ofront的一个分支,它已经在FreeBSD许可下发布。与Ofront不同,Vishap Oberon不包括Oberon v4 GUI环境。

Ulm Oberon图书馆和Ooc图书馆根据GPL分发。使用这些库的专有代码可能不是静态链接的。

Voc工具在GPLv3下发布。

libVishapOberon中的大多数运行时都是在GPLv3下分发,运行时异常。

平台支持和移植

Vishap Oberon支持32位和64位小端架构,包括Intel x86和x64,arm和ppc。

它在gcc,clang和Microsoft Visual C下编译。

安装支持GNU / Linux,MAC OSX,BSD和Windows(本机和cygwin)。

AC程序(src / tools / make / configure.c)检测运行它的C编译器和操作系统的详细信息。

以下系统得到认可:

  • Linux,包括Ubuntu和Centos衍生品。
  • BSD,包括OpenBSD和FreeBSD。
  • Windows下的Cygwin,Cygwin下的MingW,Windows上的Ubuntu上的Bash。

此外,还提供了一个Windows .cmd,用于与Microsoft C一起构建。

有关详细信息,包括如何添加对无法识别的系统的支持,请参阅 移植

语言支持和图书馆

Vishap Oberon支持Oberon 2编程语言,包括类型绑定程序。SYSTEM.Mod包含其他功能和64位支持的一些更改。

整数和集类型大小:

类型 -O2选项(默认) -OC选项
SHORTINT 8位 16位
整数 16位 32位
LONGINT 32位 64位
32位 64位

图书馆

包含的库便于从主要的Oberon系统移植代码:

  • Oberon V4和S3兼容的库集。
  • Ooc(优化oberon-2编译器)库端口。
  • 乌尔姆的Oberon系统库端口。
  • 奥克伍德标准库。
  • 其他一些可自由再发行的库。

奥林伍德图书馆支持-O2和-OC选项,而ULM,OOC和ETH系统3库仅适用于-O2(默认)编辑。

Vishap Oberon还支持Oberon-07的一些功能。

另请参见功能

贡献者

Joseph Templ开发了前端作为将Oberon-2程序转换为语义上等效的C程序的工具。它于1995年获得版权保护,并于2012年转为免费BSD许可证。

来自Joseph的github存储库:

前线的设计和实施归功于Josef Templ ...前沿部分基于Regis Crelier的博士论文和Stefan Gehring的毕业论文,均在苏黎世联邦理工学院计算机系统研究所进行。

Norayr Chilingarian于2013年分叉,从ULM OberonOO2C和ETH Oberon System 3 移植了大量库,并增加了对包括64位系统在内的更多平台的支持。

自2016年1月以来,David Brown一直致力于为使用MSC,cygwin或mingw的更多平台添加支持。最近,他在编译器中推广了基本类型支持,允许例如32位系统上的64位LONGINT和64位上的32位LONGINT比特系统。

“ѴishapOberon”这个名字的由来

奥伯伦

Oberon是一种编程语言,操作系统和图形用户界面。它最初由Niklaus Wirth和JürgGutknecht在20世纪80年代后期在苏黎世联邦理工学院设计和实施,它表明现代操作系统和GUI的基本原理可以在比现代系统更小的清晰简单的代码中实现。

Oberon编程语言是Pascal和Modula语言的演变。虽然它添加了垃圾收集,可扩展类型和(在Oberon-2中)类型绑定程序,但它也简化了爱因斯坦和Antoine de Saint-Exupéry的原理:

尽可能简单,但不简单。(艾尔伯特爱因斯坦)

如果不再需要添加任何东西,那么最终就会获得完美,但是当不再需要带走任何东西时。(Antoine de Saint-Exupéry,由LewisGalantière翻译。)

Ѵishap

可能是栖息在亚美尼亚高地的龙。我们决定将项目命名为“Vishap”,因为编译器和龙之间的关系具有古老的传统。

此外,Vishaps以故事,小说而闻名。本页将一些技术称为“计算机科幻小说”。其中来到奥伯伦。这带来了另一种意义,Oberon就像外星人,鬼魂。和Vishaps。

参考

Oberon
Oberon2
Oberon 07
链接

历史

历史

========================== End

Project Oberon的更多相关文章

  1. Learning to write a compiler

    http://stackoverflow.com/questions/1669/learning-to-write-a-compiler?rq=1 Big List of Resources: A N ...

  2. Questions that are independent of programming language. These questions are typically more abstract than other categories.

    Questions that are independent of programming language.  These questions are typically more abstract ...

  3. compiler

    http://www.lingcc.com/2012/05/16/12048/ a list of compiler books — 汗牛充栋的编译器参考资料 Posted on 2012年5月16日 ...

  4. <转载>国外程序员推荐的免费编程书籍资源

    一.George Stocker 提供了一大串,分类如下: How to Design Programs: An Introduction to Computing and Programming 2 ...

  5. Github上的1000多本免费电子书重磅来袭!

    Github上的1000多本免费电子书重磅来袭!   以前 StackOverFlow 也给出了一个免费电子书列表,现在在Github上可以看到时刻保持更新的列表了. 瞥一眼下面的书籍分类目录,你就能 ...

  6. Github 的一个免费编程书籍列表

    Index Ada Agda Alef Android APL Arduino ASP.NET MVC Assembly Language Non-X86 AutoHotkey Autotools A ...

  7. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  8. 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file

    我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...

  9. ASP.NET Core project.json imports 是什么意思?

    示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...

随机推荐

  1. C++中的函数库

    函数库是由系统建立的具有一定功能的函数的集合. 库中存放函数的名称和对应的目标代码,以及连接过程中所需的重定位信息.用户也可以根据自己的需要建立自己的用户函数库. "cstdlib" ...

  2. 数据库info.sql

    /* Navicat MySQL Data Transfer Source Server : loaderman Source Server Version : 50540 Source Host : ...

  3. 123457123457#0#-----com.twoapp.FromPuzzle02--前拼后广--儿童农场拼图游戏jiemei

    com.twoapp.FromPuzzle02--前拼后广--儿童农场拼图游戏jiemei

  4. centOS 8 安装Hadoop

    1.安装环境 本教程使用 CentOS 8 64位 作为系统环境,请自行安装系统. 本教程基于原生 Hadoop 2,在 Hadoop 2.8.5 版本下验证通过,可适合任何 Hadoop 2.x.y ...

  5. hadoop:/bin/bash: /bin/java: No such file or directory

    Stack trace: ExitCodeException exitCode=127 In HADOOP_HOME/libexec/hadoop-config.sh look for the if ...

  6. nginx+mysql双主搭建

    说明:mysql双主架构经过测试在生产环境中使用没有问题,但是还是建议使用读写分离, Mysql主主同步环境部署: centos 7.4 三台云主机:mysql1 :10.1.1.142 mysql2 ...

  7. Java使用jxl修改现有Excel文件内容,并验证其是否对公式的结果产生影响

    jxl的maven坐标: <!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl --> <dep ...

  8. iOS技术面试02:内存管理

    怎么保证多人开发进行内存泄露的检查. 如何定位内存泄露? 1> 使用Analyze进行代码的静态分析(检测有无潜在的内存泄露) 2> 通过leak检查在程序运行过程中有无内存泄露 3> ...

  9. word模板文档填充数据

    1.切记一定要用Word 97-2003(*.doc)格式的文档另存为 *.xml格式的文件,而不能用 Word 2007(*.docx)格式的word文档转 *.xml,将转成功之后的xml文件放入 ...

  10. Jquery生成二维码(微信中长按图片识别二维码功能)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...