热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OC编译:symbolstub

symbolstub符号打桩把我们的应用程序,编译成汇编代码,执行外部库的函数,就成了跳转地址(symbolstub

symbol stub

符号打桩


把我们的应用程序,

编译成汇编代码,

执行外部库的函数,

就成了跳转地址 ( symbol stub )


debug, 按住 ctrl,

以汇编代码的语句,单步执行


debug, 没有按住 ctrl,

以高级语言的语句,单步执行



走外部函数,就会走外部函数的桩 ( stub )

桩里面的代码,

指向一个新的地址,是用来寻址的


走外部函数,先找到一个桩,

运行桩里面的代码,( 是一个偏移值 )

在懒加载符号表里面

( lazy Symbol Pointers )



懒加载符号表, Lazy Symbol Pointers


例如: Foundation 中的 NSLog




直接加载符号表, Non-Lazy Symbol Pointers


dyld_stub_binder

( 我只看见一个 )



指针在 arm 64 里面,占 8 个字节



外部函数 ( 系统库,三方库的执行 ),

  • 第一次执行,有一个绑定

  • 后来的执行,

绑定后,外部函数的地址,发生了改变



推荐阅读
author-avatar
手机用户2502863567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有