美文网首页
objc_msgsend 汇编部分实现

objc_msgsend 汇编部分实现

作者: 曾柏超 | 来源:发表于2018-11-02 09:11 被阅读7次

    http://yulingtianxia.com/blog/2016/06/15/Objective-C-Message-Sending-and-Forwarding/#回顾-objc-msgSend-伪代码

    1d30941f188d45e2.gif 2354655-7729bba622afd6bc.jpg Screen Shot 2018-11-02 at 9.28.04 AM.png

    cmp

    cmp是比较指令, cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

    //判断对象是否存在
    cmp x0
    
    
    CacheLookup NORMAL  //calls imp or objc_msgSend_uncached
    
    
    Screen Shot 2018-11-02 at 9.32.39 AM.png
    cacheHit
    
    Screen Shot 2018-11-02 at 9.37.44 AM.png
    checkMiss
    
    Screen Shot 2018-11-02 at 9.42.19 AM.png
    MethodTableLookup
    

    https://www.jianshu.com/p/a4c49fecda79

    http://blog.zhengdong.me/2013/07/18/a-look-under-the-hood-of-objc-msgsend/

    http://www.arigrant.com/blog/2014/2/18/chisels-print-invocation-command

    https://www.meiwen.com.cn/subject/gljadftx.html

    相关文章

      网友评论

          本文标题:objc_msgsend 汇编部分实现

          本文链接:https://www.haomeiwen.com/subject/vnkqxqtx.html