gpt4 book ai didi

c - C标准支持的平台列表

转载 作者:太空狗 更新时间:2023-10-29 16:24:41 25 4
gpt4 key购买 nike

有谁知道 C 标准支持的任何平台,这些平台的开发工作仍在进行中,但它们是:

  • 不是2的补码或
  • 整数宽度不是 32 位或 64 位或
  • 一些整数类型有填充位或
  • 如果你在 2 的补码机上工作,带符号的位模式位 1 和所有值位零不是有效的负数或
  • 从有符号到无符号的整数转换(反之亦然)不是逐字逐句复制位模式或
  • 整数右移不是算术移位或者
  • 无符号类型的值位数不是相应有符号类型中的值位 + 1 或
  • 从更宽的 int 类型到更小的类型的转换不是由截断不适合的最左边的位

编辑:或者,如果在 1995 年至 1998 年期间有平台影响了 C99 决定包括上述内容,但已停产,我也会对它们感兴趣。

编辑:关于填充位,C 基本原理是这样说的:

填充位是用户可访问的无符号整数类型。例如,假设一台机器使用一对 16 位 short(每个都有自己的符号位)组成一个 32 位 int,并且在这个 32 位 int 中使用时忽略较低的 short 的符号位。然后,作为一个32位signed int,有一个padding位(在32位的中间)在确定32位signed int的值时被忽略。但是,如果将此 32 位项目视为 32 位无符号整数,则该填充位对用户程序可见。 C 委员会被告知有一台机器可以这样工作,这就是将填充位添加到 C99 的原因之一。

脚注 44 和 45 提到奇偶校验位可能是填充位。委员会不知道任何具有整数内用户可访问奇偶校验位的机器。因此,委员会不知道有任何机器将奇偶校验位视为填充位。

那么另一个问题是,C99提到的那台机器是什么?

编辑:C99 似乎正在考虑取消对 1 的补码和带符号大小的支持:http://www.open-std.org/jtc1/sc22/wg14/www/docs/n868.htm http://www.open-std.org/jtc1/sc22/wg14/www/docs/n873.htm (搜索6.2.6.2)

最佳答案

我最近在一家公司工作,该公司仍在使用 PDP-10 的一个版本,并为该平台移植了一个 GCC。我们使用的 10 个具有您列出的一些属性:

  • 整数不是 32 位或 64 位,它们是 36 位宽。
  • 填充位用于某些表示。对于扩展精度整数(例如 long long 类型),底层表示是 72 位,其中每个 36 位字都有一个符号位。

除了上述不寻常的属性外,还有一个问题是机器有几种不同的字节寻址机制。宽度在 6-12 位宽范围内的字节可以通过在地址本身中使用特殊位来寻址,这些特殊位指示正在使用的宽度和字对齐。要表示一个 char* ,可以使用一种寻址 8 位字节的表示法,所有这些字节都在字中左对齐,在每个 36 位字中留下 4 位根本没有寻址。或者,可以使用 9 位字节,这将均匀地适合 36 位字。这两种方法都存在可移植性缺陷,但在我离开时,人们认为使用 8 位字节更实用,因为与 TCP/IP 网络和标准设备的交互通常以 16、24 或 32 为单位位字段,它也具有 8 位字节的底层结构。

据我所知,该平台仍在该领域的产品中使用,并且该公司有一名编译器开发人员将 GCC 的相对较新版本保持在最新状态,以便在该平台上进行进一步的 C 开发。

关于c - C标准支持的平台列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com