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 = Xn;

result = CountLeadingSignBits(operand1);

Xd = 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;

相关推荐
小向是个Der2 天前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译
二十七日秋2 天前
算法刷题笔记「Day 1|四道 OJ 入门题里的深坑」
c语言·汇编·数据结构·c++·笔记·python·算法
银河麒麟操作系统2 天前
两案例入选全球计算联盟年度产业应用案例汇编
大数据·汇编·人工智能
abc light2 天前
ARM 裸机开发(2)——ARM 汇编与启动代码
汇编·arm开发
soso19682 天前
Modbus协议开发实战指南
汇编
水饺编程4 天前
第2章:Linux 基础,解压缩【.tar.gz】压缩包
linux·c语言·汇编
水饺编程4 天前
第2章:Linux 基础,exit 命令
linux·c语言·汇编
水饺编程4 天前
第2章:Linux 基础,删除用户
linux·c语言·汇编
水饺编程6 天前
第2章:Linux 基础,切换用户
linux·c语言·汇编
水饺编程7 天前
第2章:Linux 基础,在 root 中创建用户账号
linux·c语言·汇编·1024程序员节