Pascal变量表示在机器上

时间:2013-11-11 21:04:36

标签: pascal

我的作业中有一个问题。 pascal变量如何在机器上表示? 例如:在C中,它可以在不同的机器和编译器上有所不同,在java中有一个VM,因此程序员可以假设他将在不同的机器上获得完全相同的表示。

我一直在谷歌上搜索,但找不到关于pascal的答案。问题是关于pascal的原始版本,如果它改变了什么。

谢谢!

2 个答案:

答案 0 :(得分:1)

Original(J& W)Pascal非常罕见,大多数人都不知道。它被清理了一些ISO 7185标准,尽管这些变化IIRC主要影响范围和类型等价,而不是那种类型。

原创(非UCSD,在Borland / Turbo方言之前十多年)Pascal几乎没有机器相关类型。只有一种类型的INTEGER和一种浮点类型,REAL和非整数序数类型,如枚举,布尔和char。 Char不能保证8位,依赖于机器字。

Pascal在这里展示了他的大型机根源,其中单词具有像60位的外来大小,不允许子字段访问(比如字节级访问,但这是一个延伸,因为他们可能不知道字节的概念),并且多个字符被打包成机器词。 (见下面的打包数组)。 C是几年之后,并且针对迷你,所以避免了最糟糕的遗产。

整数类型是系统中最大的类型,通常是机器可以方便地做的最大类型。较小的整数大小是用子范围构造的,没有无符号类型,但是这些可以用相关的子范围定义(并且由编译器/ VM来有效地实现这些)

e..g BYTE = 0..255;

数组可以打包,必须在使用前解压缩(使用pack()和unpack())。

没有stringtype,通常使用包装的固定大小的char数组,右边填充空格来表示endofstring(因此尾随空格很难,但它只是一个约定,并没有太多的运行时支持,因此在特殊情况下,你只是做一个例外)

Unions将所有组件包含为单独的字段(不重叠),并始终命名。

它有指针,但你不能获取任意符号的地址,只能使用NEW创建新指针。

所以一般来说,原始的Pascal就是你称之为“安全”的语言,虽然它没有完全设计成这样(并且理论上并不是100%安全。它也比TP更适合VMing(和发生在加州大学圣地亚哥分校,虽然是一个子集)。

Pascal及其后继者可以被视为对随后用Java推广的概念的侦察。

答案 1 :(得分:0)

在C语言中,它可能在不同的机器和编译器上有所不同,当然它们也是Pascal中的。