机器上的Pascal变量表示法

机器上的Pascal变量表示法,pascal,Pascal,我的家庭作业给了我一个问题。 pascal变量如何在机器上表示? 例如:在C语言中,它在不同的机器和编译器上可能是不同的,在java中有一个虚拟机,因此程序员可以假设他将在不同的机器上得到完全相同的表示 我在谷歌上搜索了一段时间,找不到关于帕斯卡的答案。问题是关于pascal的原始版本,如果它改变了什么 谢谢大家! 原始帕斯卡(J&W)非常罕见,大多数人都不知道。它在ISO 7185标准中得到了一点改进,尽管IIRC的这些更改主要影响范围界定和类型等效,而不是类型的类型 最初的帕斯卡语(非UCS

我的家庭作业给了我一个问题。 pascal变量如何在机器上表示? 例如:在C语言中,它在不同的机器和编译器上可能是不同的,在java中有一个虚拟机,因此程序员可以假设他将在不同的机器上得到完全相同的表示

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

谢谢大家!

原始帕斯卡(J&W)非常罕见,大多数人都不知道。它在ISO 7185标准中得到了一点改进,尽管IIRC的这些更改主要影响范围界定和类型等效,而不是类型的类型

最初的帕斯卡语(非UCSD,比Borland/Turbo方言早了十多年)几乎没有依赖机器的类型。只有一种整型和一种浮点型、实数和非整型序号类型,如枚举、布尔和字符。Char不保证为8位,但取决于机器字

Pascal在这里展示了他的主机根,在这里,字的大小像60位,不允许子字访问(比如bytelevel访问,但这是一个延伸,因为他们可能不知道字节的概念),多个字符被打包到机器字中。(参见下面的压缩数组)。C是在几年后推出的,它瞄准了Mini,因此避免了最糟糕的遗留问题

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

e、 .g字节=0..255

阵列可以打包,并且在使用前必须解压缩(使用pack()和unpack()

没有stringtype,通常使用压缩的固定大小字符数组,并使用空格进行右填充以表示endofstring(因此尾随空格很难,但它只是一种约定,并且没有太多的运行时支持,因此在特殊情况下,您只需做一个例外)

联合体将所有组件作为单独的字段(无重叠)包含,并始终命名

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

因此,一般来说,原始的Pascal语言是一种合理的“安全”语言,尽管它并没有完全设计成这样(而且在理论上不是100%安全的。它也比TP更适合VMing(UCSD就是这样,尽管只是一个子集)


Pascal及其后继者可以被视为是对后来用Java普及的概念的侦察。

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

也许你的一位同学在课堂上讨论这个话题时记下了笔记?Pascal与C语言在表达方式上非常相似plements较低级别的概念,如variables.H2CO3:只有后来的帕斯卡衍生物,如TP do。帕斯卡最初更为抽象,大部分是安全和可验证的。