Hasty Briefsbeta

双语

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上进行测试