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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

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

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

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

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

所以问题是:什么样的体系结构展示了上述特性?

二次uint*_tS是可选的。

提问于
用户回答回答于

为尚未迁移所有Univac软件的人提供向后兼容性。

要点:

  • 36位字
  • CHAR_BIT == 9
  • 补足
  • 72位非ieee浮点
  • 代码和数据的单独地址空间
  • 字标
  • 没有专用堆栈指针

用户回答回答于

你的假设都不适用于大型机。首先,我不知道有一个大型机使用IEEE 754:IBM使用基16浮点,而Unisys大型机都使用基8。Unisys的机器在许多其他方面都有点特别:Bo提到了2200架构,但是MPS架构更奇怪:48个标签字。(单词是否是指针取决于单词中的位。)。数值表示的目的是使浮点和积分算术之间没有真正的区别:浮点是基数8;它不需要归一化,而且与我所见过的其他浮点不同,它将小数点放在尾数的右边,而不是左边,并使用符号大小表示指数(除了尾数)。其结果是,积分浮点值与有符号大小整数的位表示形式完全相同(或可能具有)。并且没有浮点算术指令:如果两个值的指数都是0,则指令进行积分运算,否则就进行浮点运算。(这是建筑中标签哲学的延续。)。这意味着int可能占用48位,其中8位必须为0,否则该值不会被视为整数。

扫码关注云+社区