NaN-Boxing in C
5 months ago
- #data-encoding
- #C-programming
- #NaN-boxing
- 定义了一个`nanbox_t`类型,可通过NaN装箱技术在64位中存储多种数据类型
- 支持存储双精度浮点数、32位整数、指针、布尔值、null及特殊值如'undefined'、'empty'和'deleted'
- 利用IEEE754标准中未使用的NaN空间和64位平台上未使用的指针位
- 提供编码函数如`nanbox_from_double`、`nanbox_from_int`等,及解码函数如`nanbox_to_double`、`nanbox_to_int`等
- 包含类型检查函数如`nanbox_is_double`、`nanbox_is_int`等
- 允许通过宏如`NANBOX_PREFIX`和`NANBOX_POINTER_TYPE`进行定制
- 支持'辅助空间'用于存储额外的48位值
- 包含演示案例展示如何在辅助空间存储短字符串(最多6字节)
- 已在x86-64架构(Intel Core 2 Duo)测试,支持32位和64位模式
- 建议在其他架构如ARM和SPARC上进行测试