`

机器指令clz的C实现

阅读更多

clz:查找一个数据x前置0的个数。

 

/**
 * 二分查找1的位置
 */
int clzInC(unsigned int x)
{
  if (!x) return 32;
  int e = 31;
  //1111 1111 1111 1111 0000 0000 0000 0000
  if (x&0xFFFF0000)   { e -=16; x >>=16; }
  //0000 0000 0000 0000 1111 1111 0000 0000
  if (x&0x0000FF00)   { e -= 8; x >>= 8; }
  //0000 0000 0000 0000 0000 0000 1111 0000
  if (x&0x000000F0)   { e -= 4; x >>= 4; }
  //0000 0000 0000 0000 0000 0000 0000 1100
  if (x&0x0000000C)   { e -= 2; x >>= 2; }
  //0000 0000 0000 0000 0000 0000 0000 0010
  if (x&0x00000002)   { e -= 1; }
  return e;
}
分享到:
评论

相关推荐

    ARMv8 arm64 指令集速览表(打印版)

    逻辑与移动指令包括位清除(BIC)、数据提取(EXTR)、反转(REV)、位计数(CLZ)等,它们用于执行更加复杂的数据处理和位操作。这些指令可以实现数据的位移、旋转、提取和复制等操作。 在这些指令的帮助下,...

    什么是异常中断产生指令

    除了SWI和BKPT之外,ARM指令集中还包含用于实现数字归一化的前导0计数指令(CLZ)。CLZ指令对一个寄存器中的值进行计数,找出最高有效位中1的前导0的数量,并将这个数量存储到另一个寄存器中。CLZ指令的一个典型用途...

    MIPS汇编指令集

    MIPS指令集旨在实现简单、对称和一致的指令编码,它具有以下特点: - 32个通用寄存器(R0-R31)。 - 指令格式固定,分为操作码(opcode)、寄存器地址(RS、RT)和立即数(IMM)三个字段。 - 每个指令固定长度为32...

    ARM指令个人总结(包括指令英文全称)

    最后,CLZ(Count left zero)指令用于计算操作数最高有效位前的零的个数,这对于优化算法和计算位掩码很有帮助。 综上所述,ARM指令集提供了丰富的指令来执行各种操作,从简单的数据转移和比较到复杂的算术和逻辑...

    ARM汇编指令.docx

    6. 伪指令在汇编语言中扮演着重要角色,它们不是真正的机器指令,而是编译器和汇编器识别的指令。例如,GNU汇编中的注释可以用@或#表示,标号以":"结尾,立即数前加"#”。伪指令如.END表示文件结束,.INCLUDE用于...

    CLZ齿式联轴器选型参数表.pdf

    CLZ齿式联轴器选型参数表pdf,CLZ齿式联轴器选型参数表

    CLZ.rar_vi

    通过这个“CLZ.vi”文件,学习者可以了解如何构建虚拟仪器,包括如何设计用户界面、如何编程实现特定功能,以及如何与其他硬件设备通信。对于初学者,这样的实例文件是非常有价值的教育资源,因为它提供了实际操作的...

    CLZ8000楼宇自控系统.pptx

    CLZ-8000智能照明控制系统实现了对室内照明的智能控制,优化光照环境并实现节能目标。而PMF660电气火灾监控产品是防范电气火灾的重要工具,它能在火灾发生前及时发现并排除故障,保障人员安全和财产不受损失。 PMF...

    clz32:ES2015 Math.clz32()ponyfill

    不推荐使用,因为现在所有现代浏览器和Node.js版本都可以使用此功能。clz32 ES2015 安装$ npm install --save clz32用法var clz32 = require ( 'clz32' ) ;clz32 ( 1000 ) ;//=> 22执照麻省理工学院:copyright:

    Single_instruction_cycle_OpenMIPS:通过学习《自己动手写CPU》,将书中实现的兼容MIPS32指令集架构的处理器——OpenMIPS(五级流水线结构),简化成单指令周期实现的处理器

    :在完成了单指令周期的ori指令后,已经大致上实现了Verilog HDL语言设计的CPU系统框架和数据流,接下来的逻辑、移位操作和空指令,只是在实现的流程上增添指令 :在之前实现的基础上继续增加了移动操作指令(增加了...

    μC/OS-II就绪表算法在Cortex-M3架构上的适配设计

    文章最后介绍了μC/OS-II就绪表算法的C语言实现和THUMB-2汇编指令实现的细节,包括如何利用内嵌clz指令的函数来实现算法,以及如何通过汇编语言优化查找函数的执行效率。 总体来说,文章提出了一个针对Cortex-M3...

    嵌入式系统/ARM技术中的μc/Os-Ⅱ就绪表算法在ARM架构上的改动

    在C语言实现中,可以使用内联汇编来调用clz指令,但因为函数调用的开销,查找效率并未完全发挥出来。为了进一步提升效率,可能需要优化编译后的汇编代码,或者直接用汇编语言编写这部分程序。 THUMB-2汇编指令可以...

    ARM指令全称以及含义,pdf版方便观看

    17. **CLZ (Count Left Zero)** - **全称**: Count Left Zero - **示例**: 计算操作数最高端0的个数 - **功能**: 计算输入操作数的最左边连续0的个数。 #### 乘法和乘加指令 1. **MUL (Multiply)** - **全称**...

    ARM指令个人总结_.pdf

    - `CLZ`:计算操作数最左侧零的个数,例如`CLZ R0, R1`计算R1中最高位的零位数。 7. **乘法和乘加运算指令**: - `MUL`:乘法,如`MUL R0, R1, R2`,R0 = R1 * R2。 - `MLA`:乘加,如`MLAS R0, R1, R2, R3`,R0...

    iot.clz.me_2.6.4.zip

    iot.clz.me_2.6.4.zip

    MIPS指令速查

    ### MIPS指令集速查知识点详解 #### 概述 MIPS32指令集是MIPS架构的一个重要组成部分,被广泛应用于计算机系统设计、嵌入式系统开发等领域。...通过这些指令的了解,可以更好地掌握MIPS32架构下的程序设计和实现方法。

    clz_ctz.rar_CTZ_SGTL5000

    压缩包内的文件"clz_ctz.c"可能是源代码文件,其中包含了实现与"CTZ"功能相关的C语言代码。这可能包括初始化SGTL5000、配置其参数、进行音频数据传输等功能。而"imx-audio-sgtl5000.txt"文件可能是关于如何在...

    23民主管理共创幸福生活(教案)clz.pptx

    23民主管理共创幸福生活(教案)clz.pptx

Global site tag (gtag.js) - Google Analytics