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

cmp 指令

时间:2018-11-16 15:13:51      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:push   div   isa   rac   pre   nbsp   title   unsigned   sem   

(lldb) disassemble -n comp2
untitled6`comp2:
    0x10d065f40 <+0>:  pushq  %rbp
    0x10d065f41 <+1>:  movq   %rsp, %rbp
    0x10d065f44 <+4>:  movl   %edi, -0x4(%rbp)
    0x10d065f47 <+7>:  movl   %esi, -0x8(%rbp)
    0x10d065f4a <+10>: movl   -0x4(%rbp), %esi
    0x10d065f4d <+13>: cmpl   -0x8(%rbp), %esi
    0x10d065f50 <+16>: seta   %al
    0x10d065f53 <+19>: andb   $0x1, %al
    0x10d065f55 <+21>: movzbl %al, %eax
    0x10d065f58 <+24>: popq   %rbp
    0x10d065f59 <+25>: retq   

(lldb) disassemble -n comp
untitled6`comp:
    0x10d065f20 <+0>:  pushq  %rbp
    0x10d065f21 <+1>:  movq   %rsp, %rbp
    0x10d065f24 <+4>:  movl   %edi, -0x4(%rbp)
    0x10d065f27 <+7>:  movl   %esi, -0x8(%rbp)
    0x10d065f2a <+10>: movl   -0x4(%rbp), %esi
    0x10d065f2d <+13>: cmpl   -0x8(%rbp), %esi
    0x10d065f30 <+16>: setg   %al
    0x10d065f33 <+19>: andb   $0x1, %al
    0x10d065f35 <+21>: movzbl %al, %eax
    0x10d065f38 <+24>: popq   %rbp
    0x10d065f39 <+25>: retq   

这个指令相当于  sub 指令,除了它不改变 flag寄存器之外的寄存器

而 sub 因为 在二进制层面上的位操作都是相同的,也就是说, unsigned subtract 和 signed substract 是同时执行的,所以无论 unsigned compare 还是 signed compare 都是使用 comp 指令。

cmp 指令

标签:push   div   isa   rac   pre   nbsp   title   unsigned   sem   

原文地址:https://www.cnblogs.com/sky-view/p/9968986.html

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