码迷,mamicode.com
首页 > 其他好文 > 详细

汇编指令之set

时间:2020-06-27 09:50:34      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:汇编指令   操作   大于   span   保存   否则   code   标志位   flag寄存器   

汇编set语句:

实现无分支比较, 不断流水线

39383E46  |.  83F9 09       cmp ecx,0x9
39383E49  |.  0F97C0        seta al

cmp 比较两个操作数,结果保存在FLAG寄存器中(同sub运算,不同在于不影响操作数, 只影响flag寄存器)

seta 的 a 表示无符号数的 above 大于,即 (和条件跳转语句同理)

如果 ecx > 9 ,则把al寄存器的值置1

否则置0

 

cmp $eax,%edx
setb $cl

  

cmp 比较两个操作数,结果保存在FLAG寄存器中

setb 的 b 表示无符号数的 below 小于,即 (和条件跳转语句同理)

如果 %eax < %edx ,则把cl寄存器的值置1

否则置0

 

Ps:是值置1,而不是寄存器的某一位

当然 %eax < %edx 是从我们人的角度来看的

对计算机而言,要看 FLAG 寄存器的标志位

无符号,小于,则看CF足矣

如果CF=1 且 ZF=0 则不够减,则小于,则寄存器 cl 置1

如果CF=0 且 ZF=0 则够减,则不是小于,则寄存器 cl 置0

汇编指令之set

标签:汇编指令   操作   大于   span   保存   否则   code   标志位   flag寄存器   

原文地址:https://www.cnblogs.com/hjbf/p/13197285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!