Project Oberon
Project Oberon
Project Oberon http://www.projectoberon.com/
Project Oberon
28.11.2018 / 11.12.2018
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 RISC Computer
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编译器和库很容易:
- 安装先决条件,如git,gcc,静态C库,diff utils。
- 克隆存储库并运行'make full'。
- (可选)使用“make install”安装到系统目录,例如/ opt或/ usr / local / share。
- 设置PATH变量以包含编译器二进制文件。
这些详述如下:
1.安装先决条件
平台 | 包 |
---|---|
Debian / Ubuntu / Mint ...... | apt-get install git |
Fedora / RHEL / CentOS ...... | yum install git gcc glibc-static (dnf 而不是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.克隆并构建编译器和库
git clone https://github.com/vishaps/voc
cd voc
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 install
ldconfg
使用新库位置进行更新。
4.设置PATH环境变量
由于不同系统和用户管理其PATH的方式有很多种,因此我们会让您更新路径以包含编译器二进制文件。
双方make full
并make 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 Oberon,OO2C和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
链接
- Niklaus Wirth在苏黎世联邦理工学院的个人页面
- 苏黎世联邦理工学院的Wirth出版物页面
- Joseph Templ在github上的面前
- 软件Templ OG
- Oberon:超越Pascal和Modula的步伐
历史
见历史。
========================== End
Project Oberon的更多相关文章
- Learning to write a compiler
http://stackoverflow.com/questions/1669/learning-to-write-a-compiler?rq=1 Big List of Resources: A N ...
- 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 ...
- compiler
http://www.lingcc.com/2012/05/16/12048/ a list of compiler books — 汗牛充栋的编译器参考资料 Posted on 2012年5月16日 ...
- <转载>国外程序员推荐的免费编程书籍资源
一.George Stocker 提供了一大串,分类如下: How to Design Programs: An Introduction to Computing and Programming 2 ...
- Github上的1000多本免费电子书重磅来袭!
Github上的1000多本免费电子书重磅来袭! 以前 StackOverFlow 也给出了一个免费电子书列表,现在在Github上可以看到时刻保持更新的列表了. 瞥一眼下面的书籍分类目录,你就能 ...
- Github 的一个免费编程书籍列表
Index Ada Agda Alef Android APL Arduino ASP.NET MVC Assembly Language Non-X86 AutoHotkey Autotools A ...
- .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
.NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...
- 记一个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 ...
- ASP.NET Core project.json imports 是什么意思?
示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...
随机推荐
- 基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)
本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...
- 002-01-RestTemplate-配置使用说明
一.概述 Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写 ...
- 初始化jsp页面下拉选备选项【我】
将下列 script标签放到页面的最下端 <!-- 初始化的全局变量,供js中使用,主要拼接下拉选的初始化值 --> <script type="text/javascri ...
- osg机械臂施工模拟
线程 0x2278 已退出,返回值为 0 (0x0). =====IfcTreeWidget==slotObjectsSelected1IfcObjectAttributeExtraction === ...
- (十八)Centos之firewall 防火墙命令
如果你的系统上没有安装使用命令安装 #yum install firewalld //安装firewalld 防火墙 开启服务 # systemctl start firewalld.service ...
- Azure DevOps的variable group实现array和hashtable参数的传递
Azure Devops中的variable group建议或者只能(?)添加string类型的value.基于此我们想在variable group实现array或者hashtable的传递的核心思 ...
- Jupter Notebook常用快捷键与常用的魔法命令
jupter notebook快捷键整理 Part1 1.删除Cell——双击D 2.撤销删除——Z 3.新建Cell——A/B (向上/向下) 4.命令窗口——P 5.运行——Ctrl+Enter ...
- 学习JavaScript之this,call,apply(转)
转自: http://www.h5cn.com/js/jishu/2016/0128/17884.html 在之前的JavaScript学习中,this,call,apply总是让我感到迷惑,但是他们 ...
- [转载]桥接与NAT
NAT相当于是局域网中的局域网,把192.168.21.1当作外网ip,重新划分了一个网关(192.168.33.x) 网桥只是把网络桥接起来,还是原来的网关(192.168.21.x),虚拟机相当于 ...
- IO-file-06 文件夹的遍历
/** * 列出下一级 * 1.list(): 列出下级名称 String[] list = dir.list(); * 2.listFiles():列出下级File对象 File[] listF ...