zoukankan      html  css  js  c++  java
  • cmp 指令

    (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 指令。

    相信世界是平的
    谨记四个字“修身养性”
    大江东去浪淘尽英雄,再牛B的人物最后也是一掊土
    向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
    相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
    我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由



    支持大额赞助:
  • 相关阅读:
    让你平步青云的10个谈话技巧
    瑞士心理学家和精神分析医师――荣格
    市场倍增理论
    淘宝网格,淘宝富人群
    波波的个人简历
    磁盘修复工具
    9种没结果的爱(未婚者必读)!!!
    网络投机市场
    网页数据抽取的方法介绍
    C#扩展方法试用
  • 原文地址:https://www.cnblogs.com/sky-view/p/9968986.html
Copyright © 2011-2022 走看看