相关疑难解决方法(0)

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

他们为什么不改变呢?

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

lisp emacs elisp

8
推荐指数
3
解决办法
1510
查看次数

在64位指针中使用额外的16位

我读到64位机器实际上只使用48位地址(具体来说,我使用的是英特尔酷睿i7).

我希望额外的16位(位48-63)与地址无关,并将被忽略.但是当我尝试访问这样的地址时,我收到了一个信号EXC_BAD_ACCESS.

我的代码是:

int *p1 = &val;
int *p2 = (int *)((long)p1 | 1ll<<48);//set bit 48, which should be irrelevant
int v = *p2; //Here I receive a signal EXC_BAD_ACCESS.
Run Code Online (Sandbox Code Playgroud)

为什么会这样?有没有办法使用这16位?

这可用于构建更多缓存友好的链表.不是将8个字节用于下一个ptr,而是将8个字节用于密钥(由于对齐限制),可以将密钥嵌入到指针中.

64-bit pointers x86-64 memory-access

6
推荐指数
3
解决办法
4559
查看次数

标签 统计

64-bit ×1

elisp ×1

emacs ×1

lisp ×1

memory-access ×1

pointers ×1

x86-64 ×1