美文网首页
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