ARM base instruction -- cls

Count Leading Sign bits counts the number of leading bits of the source register that have the same value as the most significant bit of the register, and writes the result to the destination register. This count does not include the most significant bit of the source register.

计数前导符号位对源寄存器中与寄存器最高有效位具有相同值的前导位数进行计数,并将结果写入目标寄存器。此计数不包括源寄存器的最高有效位。

32-bit variant

Applies when sf == 0.

CLS <Wd>, <Wn>

64-bit variant

Applies when sf == 1.

CLS <Xd>, <Xn>

Decode for all variants of this encoding

integer d = UInt(Rd);

integer n = UInt(Rn);

integer datasize = if sf == '1' then 64 else 32;

Operation

integer result;

bits(datasize) operand1 = X[n];

result = CountLeadingSignBits(operand1);

X[d] = result<datasize-1:0>;

integer CountLeadingSignBits(bits(N) x)

return CountLeadingZeroBits(x<N-1:1> EOR x<N-2:0>);

integer CountLeadingZeroBits(bits(N) x)

return N - (HighestSetBit(x) + 1);

integer HighestSetBit(bits(N) x)

for i = N-1 downto 0

if x<i> == '1' then return i;

return -1;

相关推荐
Lzh编程小栈15 小时前
数据结构与算法之队列深度解析:循环队列+C 语言硬核实现 + 面试考点全梳理
c语言·开发语言·汇编·数据结构·后端·算法·面试
cch89182 天前
汇编与C语言:底层对话VS高效指挥
c语言·开发语言·汇编
jwn9992 天前
PHP vs 汇编:编程语言的两极对决
开发语言·汇编·php
cch89182 天前
汇编vs易语言:底层与中文编程终极对决
汇编
cch89183 天前
汇编VS高级语言:从硬件操控到高效开发
汇编
cch89183 天前
汇编与Java:底层与高层的编程对决
java·开发语言·汇编
cch89183 天前
汇编 vs Python:编程世界的两极对决
开发语言·汇编·python
cch89183 天前
汇编与Go:底层到高层的编程差异
java·汇编·golang
山峰哥4 天前
告别“点点点”:AI 如何重构我们的测试体系与质量防线
服务器·汇编·数据库·人工智能·性能优化·重构
披着羊皮不是狼4 天前
ARM 汇编核心语法速查
汇编·arm开发