标准委员会关心的异国情调架构

标准委员会关心的异国情调架构

我知道C和C+标准保留了语言实现的许多方面-定义仅仅是因为如果有一个具有其他特性的体系结构,那么为它编写一个符合标准的编译器是非常困难或不可能的。

我知道40年前任何一台电脑都有自己独特的规格。但是,我不知道今天使用的任何体系结构:

  • CHAR_BIT != 8

  • signed

    不是二的补充(我听说Java有这个问题)。
  • 浮点不是IEEE 754兼容的(编辑:我的意思是“不在IEEE 754二进制编码中”)。

我问这个问题的原因是,我经常向人们解释,C+不要求任何其他低级别的方面,比如固定大小的类型,这是很好的..这很好,因为与“其他语言”不同,它使代码在正确使用时可以移植(Edit:因为它可以移植到更多的体系结构中,而不需要模拟机器的低级方面,例如符号+大小结构上的两种补码算法)。但我感到很遗憾,我自己无法指出任何具体的架构。

因此,问题是:哪些体系结构显示了上述属性?

† uint*_tS是可选的。


慕虎7371278
浏览 368回答 3
3回答

白板的微信

看看这个Unisys ClearPath Dorado服务器为尚未迁移所有Univac软件的人提供向后兼容性。要点:36位字CHAR_BIT == 9补足72位非ieee浮点代码和数据的单独地址空间用词没有专用堆栈指针不知道他们是否提供了C+编译器,但他们能.现在,他们的C手册的最新版本的链接已经浮出水面:Unisys C编译器编程参考手册第4.5节有一个9、18、36和72位的数据类型表。

鸿蒙传说

在浮点实现中,完全遵从ieee 754是很少见的.在这方面削弱规范允许进行大量优化。例如,子范数支持X87和SSE之间的差异。像合并乘法和加法这样的优化(在源代码中是分开的)也稍微改变了结果,但是在某些体系结构上是很好的优化。或者在x86上,严格的IEEE遵从可能需要设置某些标志,或者需要在浮点寄存器和普通内存之间进行额外的传输,以迫使它使用指定的浮点类型而不是其内部80位浮点数。有些平台根本没有硬件浮点数,因此需要在软件中进行仿真。而IEEE 754的一些需求在软件中的实现可能是昂贵的。特别是,舍入规则可能是一个问题。我的结论是,如果您不总是希望保证严格的IEEE遵从性,那么您不需要异国情调的体系结构来进入这种情况。由于这个原因,很少有编程语言保证严格遵循IEEE标准。
打开App,查看更多内容
随时随地看视频慕课网APP