#data-model #size #integer #lookup #historical #platform #type

nightly data_models

此库用于查找各种历史数据模型中 C 类型的尺寸。

5 个版本

0.2.1 2021 年 10 月 19 日
0.2.0 2021 年 10 月 19 日
0.1.3 2020 年 6 月 14 日
0.1.2 2020 年 5 月 28 日

#1515Rust 模式

每月 30 次下载

MIT 许可证

14KB
218

data_models

此库用于查找各种历史数据模型的 C 类型尺寸。

数据模型是指特定平台下整数类型的位宽选择。

示例

use data_models::*;
let model = DataModel::LP64; // e.g. Linux
let p = model.size_of::<Pointer>();
assert_eq!(p, 8);

背景

C 标准定义了五个整数基本类型

  • char
  • short
  • int
  • long
  • long long

标准没有指定每种类型的确切位数。平台或供应商相关的数据模型指定了确切的位宽。

模型名称是惯例,其中类型由一个字母及其大小表示;例如,ILP32 表示 (I)nteger, (L)ong, 和 (P)ointer 都是 32 位。尽管如此,请注意,命名方案并不完全一致。

四种数据模型得到广泛认可

  • LP32 或 2/4/4(int 是 16 位,long 和 pointer 是 32 位)M68k mac 和 Win16 API

  • ILP32 或 4/4/4(int、long 和 pointer 都是 32 位);Win32 API、Unix 和 Unix-like 系统(Linux、Mac OS X)

  • LLP64 或 4/4/8(int 和 long 是 32 位,pointer 是 64 位)Win64 API

  • LP64 或 4/8/8(int 是 32 位,long 和 pointer 是 64 位)Unix 和 Unix-like 系统(Linux、Mac OS X)

参考

  1. J. R. Mashey. The long road to 64 bits. ACM Queue Magazine, 4(8):24–35, 1996.
  2. T. Lauer. Porting to Win32: A Guide to Making Your Applications Ready for the 32-Bit Future of Windows. Springer, 1996.

无运行时依赖项