当前位置:  技术问答>linux和unix

位映射??????????

    来源: 互联网  发布时间:2016-04-09

    本文导语:  // Bitmap manipulation routines #include "bitops.h" int find_first_zero_bit(void *bitmap, int len) {   int result;   if (!len) return 0;   __asm   {     mov ebx, bitmap     mov edi, ebx     mov ecx, len     add ecx, 31     shr ecx,...

// Bitmap manipulation routines

#include "bitops.h"

int find_first_zero_bit(void *bitmap, int len)
{
  int result;

  if (!len) return 0;

  __asm
  {
    mov ebx, bitmap
    mov edi, ebx
    mov ecx, len
    add ecx, 31
    shr ecx, 5
    xor edx, edx
    mov eax, -1
    repe scasd
    je ffzb1
    
    sub edi, 4
    xor eax, [edi]
    bsf edx, eax

ffzb1:
    sub edi, ebx
    shl edi, 3
    add edx, edi
    mov result, edx
  }

  return result;
}

不知道这代码是什么意思,用途何在。随便GOOGLE下,说查找什么最高位为0的,看了半天还是不明白。

|
The kernel also provides routines to find the first set (or unset) bit starting at a given address:
int find_first_bit(unsigned long *addr, unsigned int size)
int find_first_zero_bit(unsigned long *addr, unsigned int size)



Both functions take a pointer as their first argument and the number of bits in total to search as their second. They return the bit number of the first set or first unset bit, respectively. If your code is searching only a word, the routines __ffs() and ffz(), which take a single parameter of the word in which to search, are optimal.

在Linux Kernel Development 的第九章有提到。 不过具体的实现你要自己去看了。 
还有,可以看看其他平台的非汇编实现。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c++类库Boost::bimap(双向映射)介绍及使用实例
  • Linux内存映射 物理地址映射到虚拟地址
  • 将ResultSet结果集中的记录映射到Map对象中
  • 如何解决端口映射只能映射一台服务器的问题?
  • Docker 端口映射,端口绑定操作介绍
  • [端口映射-在线等-100分]新安装的redhat as4 ,怎样做端口映射?
  • HTML 5 <area> 标签-定义图像映射中的区域
  • 知道为什么的帮个忙解释一下:1、weblogic里面的web.xml和tomcat里面的web.xml配置为什么不同?2,是不是一定要指定servlet-mapping映射一个别名,并用那个映射名访问,而用原来那个名不行???
  • python内置映射类型(mapping type):dict哈希字典遍历方式及其它用法举例
  • 网络映射
  • mmap文件映射的问题
  • XML与Java类相映射 Xmappr
  • 在linux下能实现多端口映射吗?
  • mmap如何分段内存映射
  • O/R映射框架 Mr.Persister
  • 内存映射
  • 映射区可执行PROT_EXEC好像是用不了啊??
  • 如何在其他盘中实现对这个盘中所有文件和文件的8映射
  • 对象/关系映射持久层框架 Ebean
  • I/O端口寄存器地址在驱动中到底要被映射几次???
  • 内存映射文件问题疑惑:


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3