gpt4 book ai didi

emacs - 为什么 Emacs 中的 fixnums 只有 29 位?

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:33 25 4
gpt4 key购买 nike

他们为什么不改变它?

编辑:之所以问是因为我是 emacs 的新手,我想将 Emacs 用作“程序员计算器”。因此,我可以操作 32 位和 64 位整数,并让它们像在 native 上一样运行。

最佳答案

Emacs-Lisp 是一种动态类型语言。这意味着您需要在运行时使用类型标签。如果你想使用数字,你通常必须将它们打包到某种你可以指向的标记容器中(即“框”它们),因为在运行时无法区分指针和机器整数没有某种标记方案。

出于效率原因,大多数 Lisp 实现因此不使用原始指针,而是我认为称为描述符的东西。这些描述符通常是一个机器字,可以表示一个指针、一个未装箱的数字(所谓的 fixnum),或各种其他硬编码数据结构之一(通常值得编码 NIL 和 cons例如,也特别是细胞)。

现在,很明显,如果你添加类型标签,你就没有剩下完整的 32 位数字,所以你剩下 26 位,如 MIT Scheme 或 29 位,如 Emacs 或任何其他数字未用于标记的比特数。

各种动态语言的某些实现为 fixnums 保留了多个标记,以便它们可以为您提供 30 位甚至 31 位的 fixnums。 SBCL 是 Common Lisp 的一种实现,does this .不过,我认为这导致的并发症对于 Emacs 来说并不值得。在一个甚至不将其 Lisp 代码编译成机器码(或者编译成机器码)的文本编辑器中,您需要多久使用一次快速的 30 位 fixnum 算术而不是 29 位 fixnum 算术?我不不记得了,实际上)?您正在使用 Emacs-Lisp 编写分布式.net 客户端吗?那么最好切换到 Common Lisp! ;)

关于emacs - 为什么 Emacs 中的 fixnums 只有 29 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/106597/

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