当前位置: 首页 > wzjs >正文

网站的用户运营值得做吗优化网站平台

网站的用户运营值得做吗,优化网站平台,湖州网站做等保费用,网站建设面包屑导航条1.静态成员函数和普通成员函数 源文件编译成目标文件,静态成员函数和普通成员函数在目标文件代码段,函数添加进了符号表,地址是在代码段的相对地址,这个地址只是一个临时地址因为后面链接时还要合并代码段,函数地址还…

1.静态成员函数和普通成员函数

源文件编译成目标文件,静态成员函数和普通成员函数在目标文件代码段,函数添加进了符号表,地址是在代码段的相对地址,这个地址只是一个临时地址因为后面链接时还要合并代码段,函数地址还要变,然后链接合并目标文件,代码段合并后静态成员函数和普通成员函数固定了,修改符号表中的函数地址,最后靠重定位表修改代码段和数据段里函数调用的地址,就完了

2.虚函数

源文件编译成目标文件,虚函数在目标文件代码段,并且虚函数添加进了符号表,地址是在代码段的相对地址,这个地址只是一个临时地址因为后面链接时还要合并代码段,函数地址还要变,虚函数表创建好在只读数据区,函数地址和符号表一样是临时地址。然后链接合并目标文件,代码段合并后虚函数固定了,修改符号表中的函数地址,修改虚函数表里的函数地址,只读数据段合并后虚函数表固定了,向构造函数中添加虚函数表指针的硬编码指令,最后靠重定位表修改代码段和数据段里函数调用的地址,就完了

ps:虚基表过程同虚函数表,不过虚基表的内容在编译时就已经确定,只需要在链接合并只读数据段虚基表固定了,往构造函数添加虚基表指针的硬编码即可

下面是AI生成的理解

1. 重定位的核心作用

重定位 不修改符号表,而是修正 代码段(.text)和数据段(.data)中对符号的引用地址。符号表的更新是链接过程的副产品,而非重定位的直接目标。

(1) 符号表的角色
  • 编译阶段:记录符号名称、类型(函数/变量)和 临时地址(目标文件内部的偏移量)。

  • 链接阶段:链接器分配最终地址后,符号表中的地址会被更新,但 符号表本身不参与运行时执行

(2) 重定位的真实行为
  • 修正目标:代码段中的 call 指令、数据段中的指针等 对符号的引用

  • 操作方式:根据重定位表(.rel.text/.rel.data)的指示,将临时占位符替换为最终地址。


2. 具体流程示例

假设有两个文件:

// a.cpp
void foo(); // 声明
int main() { foo(); }  // 编译为:call 0x00000000(需重定位)// b.cpp
void foo() {} // 定义(临时地址0x00000010)
(1) 编译后目标文件的状态
  • a.o 的符号表

    _Z3foov: UND (未定义)     // 声明
    main: T (定义在.text段)   // 地址 0x00000000
  • a.o 的重定位表

    OFFSET=0x00000005, TYPE=R_X86_64_PC32, SYMBOL=_Z3foov

    call 指令的操作数位于 main 函数偏移 0x05 处)

(2) 链接时的操作
  1. 合并段:将 a.o 和 b.o 的 .text 段合并,假设:

    • main 函数最终地址:0x401000

    • foo 函数最终地址:0x401020

  2. 重定位修正

    • 找到 a.o 中 call 指令的位置(0x401005)。

    • 计算相对偏移:0x401020 (foo) - 0x40100A (下条指令) = 0x16

    • 将 call 0x00000000 修正为 call 0x16(实际编码为 E8 16 00 00 00)。

  3. 符号表更新(副产品):

    • _Z3foov 的地址更新为 0x401020(仅用于调试,不参与运行)。


3. 关键区别:符号表 vs. 重定位

目标文件组件作用是否影响运行时
符号表(.symtab)记录符号名称和地址的映射否(调试用)
重定位表(.rel.*)标记需要修正的指令/数据位置是(直接修改代码)
  • 符号表:像一本书的目录,帮助链接器找到符号定义。

  • 重定位表:像编辑批注,告诉链接器哪些地方需要修改。

http://www.dtcms.com/wzjs/526438.html

相关文章:

  • 为什么网站显示乱码八爪鱼磁力搜索引擎
  • 怎样做建网站做淘客无锡今日头条新闻
  • 福州做网站企业乐陵seo优化
  • 深圳网站建设黄浦网络-骗钱热点新闻事件素材
  • 云南建设网站公司怎么优化网站关键词排名
  • 哪家网站推广好百度一下百度网站
  • 做网站 售后服务里都写啥10常用的网络营销方法
  • 做网站项目需求分析是什么网站关键字优化软件
  • 网站项目分析怎么做 方法爱站网注册人查询
  • 怎么做微信辅助的网站视频号最新动作
  • 美化网站代码正规网络推广服务
  • 慈溪网站建设哪家好网站seo运营培训机构
  • 做旅游视频网站网站建设方案
  • wordpress get_the_categoryseo去哪里培训
  • php做网站多少钱在线推广企业网站的方法有哪些
  • 下载西瓜视频免费安装谷歌seo关键词排名优化
  • 做思维导图的在线网站网络营销做的比较好的企业
  • 网页预览手机网站效果软文推广做的比较好的推广平台
  • 想网上卖家具怎么做网站武汉服装seo整站优化方案
  • 山东平台网站建设价位牛排seo
  • 北京学网站开发要看网的域名是多少
  • 本地搭建linux服务器做网站指数函数
  • 外贸独立站saas建站搜索引擎名词解释
  • 网站建设周期计划seo优化与推广招聘
  • 个人开发app需要多少钱沈阳seo建站
  • 运营网站是什么意思磁力搜索器
  • 东莞网站制作咨询祥奔科技武汉seo网站管理
  • asp.net手机网站开发教程临沂seo整站优化厂家
  • 微信上优惠券的网站怎么做的网络营销中的四种方法
  • 给人做网站多少钱如何在百度发广告