这是一个抛弃的评论,不是吗?
BSWAP(字节交换)指令反转32位寄存器操作数中的字节顺序.位位置0到7用24到31交换,位位置8到15用16到23交换.连续两次执行该指令使寄存器具有与之前相同的值.BSWAP指令对于"big-endian"和"little-endian"数据格式之间的转换很有用.该指令还加速了十进制算术的执行.(XCHG指令可用于交换字中的字节.)
而且,最重要的是,作为括号的最后一句与它似乎适用的陈述无关.并且,如果它不是这样做的,为什么要括号.
我的结论是,doco仍然是由英特尔工程师而不是技术作家写的,他们会抓住那些针对英语的那些痛苦的罪行:-)
但是,至于它如何加速小数运算,只有一种可能性跳跃到脑海(而且,说实话,它更像是一次痛苦的爬行而非飞跃).
如果您有一个由十进制数字组成的大数字,每个字符一个,按顺序排列在内存中,如果您可以一次处理四位数字,则可能会有性能提升.但是,在little-endian机器上,将(顺序存储器中)字节加载{0x01, 0x02, 0x03, 0x04}为32位值(dword)会给你0x04030201.
在执行此bswap操作之前,可以更轻松地将其作为dword进行操作,然后再将其作为dword进行操作bswap.
当然,这是猜测(虽然我想考虑它有教育的推测(a)),但英特尔并没有给你我们在你提到的文件中继续做太多.对于所有出现的情况,搜索卷1,2a,2b,2c,3a,3b和3c bswap似乎也没有弄清楚它.
(a)英特尔已经有一些"偷偷摸摸"的指令用于做这样的事情多年,我记得最早的是daa/das在使用基于字节的非BCD添加之后调整BCD值(每字节两个)的指令.虽然我还没有进行详尽的搜索,但是认为他们可能在dword中对数字字符有类似的东西并不是可能的范围.
作为第一步,您可以查看英特尔的IDFPL,它们的库实现了IEEE754标准的小数侧,您可能会发现它在那里使用.如果没有,它可以用于其他高性能十进制库.