bsfl汇编指令 http://blog.csdn.net/chief1985/article/details/2441182
来源:互联网 发布:获取mac的最高权限 编辑:程序博客网 时间:2024/06/08 18:06
导读:
bsfl汇编指令:
intel汇编指令:bsf oprd1,oprd2;
顺向位扫描(bit scan forward)
从右向左(从位0-->位15或位31)扫描字或双字操作数oprd2中第一个含"1"的位,并把扫描到的第一个含'1'的位的位号送操作数oprd1
AT&T格式汇编指令bsfl类似bsf,只是源操作数和目的操作数顺序相反。
比如网上有一个类似语句的分析:
.__asm__("bsfl %1,%0/n/t"
"jne 1f/n/t"
"movl $32, %0/n"
"1:"
: "=r"(set)
:"r"(~ (*p >> bit)));
进入汇编指令前的初始条件:
p:指向offset所指向的起始位所处的那个unsigned long型4B双字的开始处。
bit: offset所指向的起始位位于所处在的那个unsigned long型4B双字中的第几位。
*p >> bit : 将指向offset所指向的起始位所处的那个unsigned long型4B双字的开始处的指针右移bit位,即:将offset所指向的起始位前面的位全部移出去,而将offset所指向的起始位右移到了最右端(最低位,0位),该起始位成了该unsigned long型4B的首位了。
~ (*p >> bit) :将各位取反,本来是要找从offset位开始的后面的第一个'0'位,这一取反就将问题转化为找从offset位开始的后面的第一个'1'所在的位。
bsfl %1,%0 <====> bsfl (~ (*p >> bit)),set
找(~ (*p >> bit))中的第一个'1'所在的位,将结果存放在set中返回。
movl $32, %0 :
当从offset位开始的后面的32个位为全'0',即:取反前为全'1',这时置set = 32
关于linux下的汇编,可以在这里找到更多信息:
http://asm.sourceforge.net/howto/Assembly-HOWTO.html
本文转自
http://topic.csdn.net/t/20061220/20/5244999.html
bsfl汇编指令:
intel汇编指令:bsf oprd1,oprd2;
顺向位扫描(bit scan forward)
从右向左(从位0-->位15或位31)扫描字或双字操作数oprd2中第一个含"1"的位,并把扫描到的第一个含'1'的位的位号送操作数oprd1
AT&T格式汇编指令bsfl类似bsf,只是源操作数和目的操作数顺序相反。
比如网上有一个类似语句的分析:
.__asm__("bsfl %1,%0/n/t"
"jne 1f/n/t"
"movl $32, %0/n"
"1:"
: "=r"(set)
:"r"(~ (*p >> bit)));
进入汇编指令前的初始条件:
p:指向offset所指向的起始位所处的那个unsigned long型4B双字的开始处。
bit: offset所指向的起始位位于所处在的那个unsigned long型4B双字中的第几位。
*p >> bit : 将指向offset所指向的起始位所处的那个unsigned long型4B双字的开始处的指针右移bit位,即:将offset所指向的起始位前面的位全部移出去,而将offset所指向的起始位右移到了最右端(最低位,0位),该起始位成了该unsigned long型4B的首位了。
~ (*p >> bit) :将各位取反,本来是要找从offset位开始的后面的第一个'0'位,这一取反就将问题转化为找从offset位开始的后面的第一个'1'所在的位。
bsfl %1,%0 <====> bsfl (~ (*p >> bit)),set
找(~ (*p >> bit))中的第一个'1'所在的位,将结果存放在set中返回。
movl $32, %0 :
当从offset位开始的后面的32个位为全'0',即:取反前为全'1',这时置set = 32
关于linux下的汇编,可以在这里找到更多信息:
http://asm.sourceforge.net/howto/Assembly-HOWTO.html
本文转自
http://topic.csdn.net/t/20061220/20/5244999.html
版权声明:本文为博主原创文章,未经博主允许不得转载。
0 0
- bsfl汇编指令 http://blog.csdn.net/chief1985/article/details/2441182
- 收集的图像处理网站http://blog.csdn.net/chief1985/article/details/1898358
- 用gdb 查看,执行汇编代码 http://blog.csdn.net/hejinjing_tom_com/article/details/26704487
- ps aux指令詳解 http://blog.csdn.net/hanner_cheung/article/details/6081440
- http://blog.csdn.net/IBM_hoojo/article/details/5688947
- http://blog.csdn.net/chenlaic/article/details/6143235
- http://blog.csdn.net/eaglewood2005/article/details/4335052
- http://blog.csdn.net/mchp/article/details/3995970
- http://blog.csdn.net/v_july_v/article/details/6015165
- http://blog.csdn.net/masterz/article/details/6232585
- http://blog.csdn.net/perfectpdl/article/details/6442847
- http://blog.csdn.net/eroswang/article/details/1967243
- http://blog.csdn.net/zhvsby/article/details/5986645
- http://blog.csdn.net/dz45693/article/details/6183645
- http://blog.csdn.net/david_lv/article/details/5798003
- http://blog.csdn.net/zxingchao2009/article/details/6299313
- http://blog.csdn.net/zhanxinhang/article/details/6783766
- http://blog.csdn.net/ruanruoshi/article/details/935510
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- OpenGL3.0教程 第九课:VBO索引
- Java类加载过程中静态变量和变量的区别
- Unity自动更新、AssetBundle整理
- 一位iOS开发者使用React Native的体验
- bsfl汇编指令 http://blog.csdn.net/chief1985/article/details/2441182
- byte[]数组和int之间的转换
- OpenGL3.0教程 第十课:透明
- OpenGL3.0教程 第十一课:2D文本
- android.os.NetworkOnMainThreadException错误解决办法
- OpenGL3.0教程 第十二课:OpenGL扩展
- 机器视觉——基于立体视觉的变形测量
- IIS设置问题
- LightOJ 1422 Halloween Costumes