小编Alw*_*Nub的帖子

使用较少位的无符号qword(64位)的值范围?

我正在寻找一种方法来表示值范围:0 - 18446744073709551615使用少于8个字节.

我试着想一些可以做到的方法,但没有任何作用.理论上,例如:使用单个字节表示至少2个字节的位序列.但是,2个字节具有65536个不同的位组合,而单个字节仅给出0-255(256个组合)的值范围.

最好的方法可能是改变位的含义.那没关系,但不能有任何精确损失.

我开始认为它根本不可能,但我希望得到其他人关于这个问题的意见和理论.

有两个规则:#1不能有任何精度损失(即,所有数字0 - 18446744073709551615必须是可表示的).#2从标准64位格式转换永远不会导致需要超过7个字节(56位).

这些规则使这一点特别困难.

c++ compression binary assembly number-theory

1
推荐指数
1
解决办法
110
查看次数

使用RSI/RDI vs r8-r15(速度优化)

我想尽可能地优化我的函数,我做的一件事就是使用r8作为指针,因为这是指针在x64函数中被推入的寄存器.

但是推送RSI或RDI,将指针移动到它们并在循环中更快地使用它们?

例如,mov [RSI],DL;将编译为2个字节和:mov [r8],DL; 将编译为3个字节

所以,如果我做了100到200次循环,r8会因为要解码的额外字节而变慢吗?或推动RSI并移动指针消除任何可能的速度增加?显然push和mov会在循环外发生.

optimization assembly x86-64 masm micro-optimization

0
推荐指数
1
解决办法
129
查看次数