在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 20325|回复: 39

堆栈计算机的原理和实现

[复制链接]
发表于 2008-8-12 09:29:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
堆栈计算机的原理和实现
作者 Philip J. Koopman, Jr.
编译 赵宇 张文翠
第一章 简介和概览
1.1 概览
硬件支持的后进先出堆栈(LIFO)从50年代后期就已经开始用于计算机中。早期增加这些堆栈的目的是加快 ALGOL 一类高级语言的执行速度。从那个时候开始,堆栈在硬件设计者面前就一时儿被使用、另一时被放弃,最后在大多数计算机中变成了次要的数据处理结构。令堆栈鼓吹者大惑不解的是,把堆栈作为主要数据处理结构的计算机系统从来就没有被基于寄存器的机器设计者们所广泛接受。
随着超大规模集成电路(VLSI)技术被引入微处理器中,传统的计算机设计方法再一次受到了质疑。复杂指令计算机系统(CISC)被可理解的指令集所替代。精简指令集计算机(RISC)使用简化的处理器内核在许多应用中都达到了更高的原始处理速度。
堆栈计算机再一次被作为一种设计风格来考虑。新一代的堆栈计算机基于VLSI 设计技术,提供了传统堆栈计算机所不能提供的附加收益。这些新的堆栈计算机通过许多特性的组合,得到令人印象深刻的速度、灵活性和简单性。
堆栈计算机的复杂性比 CISC 要低得多,系统复杂性更是比 RISC 和 CISC 都低很多;堆栈计算机的高性能不需要复杂的编译器或者CACHE 硬件控制器就能够实现;它们也提供了有竞争力的原始性能,在许多编程环境中用同样的价格能够提供更高的性能;它们的第一个成功领域都是嵌入式实时控制环境,在这里它们比其它系统设计方法做得更好。此外,堆栈计算机在执行其它应用程序方面也表现出美妙的前景,这些语言包括:逻辑程序设计语言 Prolog、函数程序设计语言 Miranda 和 Scheme、人工智能研究语言 OPS-5 和 Lisp 。
新一代的堆栈计算机与旧的堆栈计算机系统相比,其最主要的差异是:旧系统把堆栈放置到程序存储器中,而新的堆栈计算机维护分离的存储器芯片,甚至把堆栈存储器放到芯片上,原因是这些巨大的、高速度的、专用的堆栈存储器现在成本极低。这些堆栈计算机提供极高速的子程度调用能力、极佳的中断处理和堆栈切换性能。把这些特点集成在一起,我们就得到了新的计算机系统:快速、灵巧、紧凑。
本章将首先讨论堆栈的运算规则,然后介绍硬件支持的堆栈计算机设计的术语,讨论一个抽象的堆栈计算机和几个商业实现,进而研究堆栈计算机的性能特点、硬件和软件考虑,最后给出几个堆栈计算机设计的未来趋势。
1.2 什么是堆栈?
LIFO 堆栈,也称为“下推栈”,从概念上讲,它是一般计算机操作中计算表达式和处理递归子程序调用时在临时存储器位置保存信息的最简单的方法。
1.2.1
自助餐厅的例子
让我们用一个生活中的例子来说明堆栈是如何工作的。回忆一下在自助餐厅中经常见到的那种有弹簧的盘子容器,假设我们给每个盘子上都贴了一个标号,任何时刻盘子都是从最上面放上去的,这时其它的盘子压缩弹簧为后续的盘子留出了空间。如图 1.1 所示, 42、 23、 2 和 9 号盘子依次放入,并且 42 号是最先放入的,而 9 号盘子最后放入。

堆栈计算机的原理和实现.rar

456.45 KB, 下载次数: 257 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2008-8-12 09:32:05 | 显示全部楼层
Forth 语言概要

作者 Peter Knaggs

翻译 赵宇 张文翠

原文标题《 Forth: An underview 》

本文的目的是给出 Forth 编程系统的一个整体轮廓,包括语言的历史、突出的特点和使用方法,讨论了最常用的实现方法,但更重要的是讨论了 Forth 编程的方法和哲学思想。

1.Forth 的来历

按照 Forth 语言的发明人 Charles Moore ( Chuck )的说法:

我第一次把各种想法组合成一个整体之后,它在“第三代计算机” IBM1130 上工作得如此有效,以致于我认为它是“第四代语言”,理所当然地应该被称为 FOURTH 。不过,当时的 IBM 计算机只允许 5 个字符的标识符。所以 FOURTH 变成了 Forth ,这是一个非常好的的文字游戏。

2. 历史

Forth 语言是 60 年代发明的,当时 Moore 在斯坦福线性加速器中心做计算机程序员工作,后来变成了一个自由工程师。当时的工程技术人员为了控制编译程序必须学习大量的方法,包括连接器、汇编器、伪指令以及高级语言,开发这个新工具的目标就是为了克服这些问题。

第一个称为 Forth 的程序大约是在 1970 年编写的。第一个完整的实现是 1971 年在一台 PDP-11 上完成的,用于亚利桑那州国家射电天文台的 11 米射电望远镜。这个系统的责任是定向和跟踪望远镜,收集数据并记录到磁带上,支持一个交互式的图形终端,供天文学家分析以前记录的数据。系统的多任务特点允许这些功能同时执行,没有时间上和其它方面的冲突。

这个系统取得了巨大的成功,世界各地的天文学家开始请求提供软件拷贝。Forth的使用范围迅速也扩大,国际天文学会于 1976 年接受了 Forth 作为标准语言。

这个应用的成功还促使 Moore 和 Elizabeth Rather ( ("Bess") 于 1973 年成立了 Forth, Inc. 公司,目标是开发这种语言的商业应用。 Forth, Inc. 在小型机上开发了多用户的 Forth 版本,可以用于从数据库到图像处理等科学和应用领域。和第一个应用一样,它们需要不同工具的组合。

1977 年,公司为刚刚出现的 8 位处理器开发了一个称为“microForth”的版本,对小型机上的“miniForth”做了扩展和补充。1979 年,称为“PolyForth”的产品替代了这些系统。从此以后,它就成了市场上销售量最大的 Forth 系统。

“microForth”系统在美国、欧洲和日本的嵌入式微处理器应用中取得了成功,由此产生了欧洲 Forth 用户团体 (EFUG) ;1978年,位于北加利佛尼亚的计算机爱好者成立了 Forth 兴趣组织 (FIG).

FIG 从天文台得到 Forth 系统,再用这个系统开发出一个简单的模型,然后在几个不同的系统上实现(那当然是得到了 Forth,Inc 的许可之后)并以非常低的价格销售。这个模型后来变成了著名的 FIG-Forth 模型。所有这些使得对 Forth 的兴趣迅速增大。 FIG 目前在 15 个国家中有 60 个分支。


[ 本帖最后由 vividsoft 于 2008-8-12 09:36 编辑 ]

Forth 语言概要.rar

42.05 KB, 下载次数: 43 , 下载积分: 资产 -2 信元, 下载支出 2 信元

Forth 语言简明教程.rar

184.95 KB, 下载次数: 59 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2008-8-12 09:37:10 | 显示全部楼层
第一章 符式哲理
──────────────────────────────────────
 符式(Forth)是一種語言,也是一種作業系統。除此之外,它也是一種哲理的具體表現。這種哲理不能被描述為符式之外的某種東西。它既不是先於符式而生,而且除 了在符式的討論下,也沒有別處可以去描述它。甚至除了符式這個名字,它也沒有別的 稱呼。
 這種哲理是什麼? 你又如何用它來解決你的軟體問題?
 在回答這些問題之前,我們不妨先後退百步,去回顧一下計算機科學家在往年所發 展的一些主要哲理。先回溯那些已經走過的腳步,然後再將符式與目前最進步的程式撰寫原理作對照比較。
軟體優雅性的回顧史

 在撰寫程式的早期,也就是計算機還像恐龍巨獸的時代,某些天才人物只要能讓一 個程式跑得正確無誤,就已經是令人瞠目結舌的奇蹟。但是隨著計算機的進步,這種奇妙的感覺也逐漸消失。經理人對程式設計師以及程式本身的需求也越來越多。
 隨著硬體價格持續而穩定地下降,軟體價格卻拼命上飆。程式跑得正確無誤已經不 能讓人叫好,大家所要求的是程式能快速地被發展出來,以及程式在維護上的簡便。眾人眼光在注視正確無誤的同時,也開始注視同等重要的另一項需求,那就是所謂"雅緻" 的品質。
 在本章中,我們要將撰寫雅緻的程式所用的工具及技巧之演變史介紹給讀者。

ThinkingForth.rar

527.1 KB, 下载次数: 56 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2008-8-12 09:41:38 | 显示全部楼层
Forth 语言简明教程




赵宇张文翠 编译
原作者 Richard E. Haskell
Dept. of Computer Science and Engineering Rochester,
Michigan 48309
原文标题 《 The Forth Course 》
前言
什么是 Forth ?我们为什么要学习 Forth ?
Forth 是这样一种程序设计语言……
•  由 Charles Moore 在上个世纪七十年代早期发明;
•  是可扩展的;
•  在字典中保存所有的定义;
•  极其紧缩;
•  支持递归;
•  可以在 RAM 和 ROM 两种类型的存储器中运行 ;
•  结构化;
•  使用堆栈和后缀表示法;
•  模块化程度极高;
•  支持交互式开发和运行;
•  特别易于调试;
•  非常便于访问机器硬件;
•  运行速度很快,还包含一个汇编器;
•  语言系统是便携式的(开发环境和编译器尺寸极小);
•  可以完全理解;
•  能够在硬件支持的 Forth 处理器上执行;
•  几乎在每一种通用的和不通用的微处理器上实现;
•  用了之后就无法放弃;
•  与其它程序设计语言差异很大;
你现在读到的就是 Forth 程序设计语言教程,它由 11 个部分组成,每个部分为一课,总的目标是简化学习 Forth 的过程。
本教程的素材来自于作者几年来的 Forth 语言教学实践,它们作为 Oakland University in Rochester, Michigan 嵌入式软件设计和计算机系统科学课程的一部分,为大学生和研究生讲授,并作为计算机工程、电子工程、计算机科学和工程、系统工程和计算机科学的主修课。
在课程开始的时候,没有人知道 Forth ,甚至大多数人都没有听说过它,到了课程结束的时候,有些人(通常是计算机科学类的学生)表示再也不想见到这种语言了!另一方面,其它的人(大多数都是工程类的学生)发现 Forth 真是一个他(她)们需要的、用来解决某些真实世界问题的工具,而且是“一但拥有、别无所求”。
现在你将要学习本课程。我们假设你懂得一些其它的程序设计语言(比如 Pascal, Fortran 或者 Basic ),如果理解 8088/8086 汇编语言会很方便,但这不是必须的,如果想学习汇编语言,现在有不计其数的 8088/8086 汇编语言教程。
我们的课程将采用 F-PC 3.5 Forth 系统,这是一个庞大的、功能齐全的、独立的 Forth 系统,由于 Tom Zimmer 的努力而开发完成。这个版本包含了许多你认为应该在一个优秀的程序设计语言中包含的特点,还有许多你从来就没有想到的功能,比如一个集成的超文本系统。当然, F-PC 系统的许多功能你可能不会用到,还有一些可以在需要的时候再学习。
通过本课程的学习,你会得到许多背景知识以及 F-PC 系统有价值的信息,希望这能够为你打开一个新的、强大的程序设计之路。
原作者 R. E. Haskell, 1990 年 8 月
发表于 2008-8-13 08:53:35 | 显示全部楼层
thanks
发表于 2008-8-13 09:05:14 | 显示全部楼层
好东西谢谢楼主
发表于 2008-8-13 23:29:06 | 显示全部楼层
还不知道这个东东 学习学习
发表于 2008-9-7 11:05:54 | 显示全部楼层
good book , thank you
发表于 2008-9-12 12:28:32 | 显示全部楼层
从哪里弄的资料
头像被屏蔽
发表于 2008-9-12 14:01:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 13:02 , Processed in 0.031068 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表