5 个版本
0.2.1 |
|
---|---|
0.2.0 | 2021 年 10 月 19 日 |
0.1.3 | 2020 年 6 月 14 日 |
0.1.2 | 2020 年 5 月 28 日 |
#1515 在 Rust 模式
每月 30 次下载
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)
参考
- J. R. Mashey. The long road to 64 bits. ACM Queue Magazine, 4(8):24–35, 1996.
- T. Lauer. Porting to Win32: A Guide to Making Your Applications Ready for the 32-Bit Future of Windows. Springer, 1996.