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

购车网站设计做网站干什么用

购车网站设计,做网站干什么用,论坛网站制作教程,如果做好网站社区的建设接上一篇。 7.3 地址无关代码 对于现代机器来说,引入地址无关代码并不麻烦,我们展示下各种模型的地址引用方式: 1. 模块内部函数调用 2. 模块内部的数据访问,如全局变量、静态变量。 3. 模块外部的函数调用,跳转。 4.…

        接上一篇。

7.3 地址无关代码

        对于现代机器来说,引入地址无关代码并不麻烦,我们展示下各种模型的地址引用方式:

        1. 模块内部函数调用

        2. 模块内部的数据访问,如全局变量、静态变量。

        3. 模块外部的函数调用,跳转。

        4. 模块外部的数据访问。

        当编译器在编译 pic.c 时,它实际上并不能确定变量b和函数ext()是模块外部的还是模块内部的,因为它们有可能被定义在同一个共享对象的其他目标文件中。由于没法确定,编译器只能把它们都当作模块外部的函数和变量来处理。MSVC编译器提供了_declspec(dllimport)编译器扩展来表示一个符号是模块内部的还是模块外部的。

 1. 模块内部函数调用

        同一模块中的函数地址相对固定,寻址相对简单些,使用的是相对寻址,不需要重定位。

        这条指令中的后4个字节是目的地址相对于当前指令的下一条指令的偏移,即0xFFFFFFE8(Little-endian)。0xFFFFFFE8是-24的补码形式,即 bar 的地址为0x804835c+(-24)=0x8048344。那么只要bar和foo的相对位置不变,这条指令是地址无关的。即无论模块被装载到哪个位置,这条指令都是有效的。这种相对地址的方式对于jmp指令也有效。

        

2. 模块内部数据访问

         模块内部访问也是相对寻址。一个模块前面一般是若干个页的代码,后面紧跟着若干个页的数据,这些页之间的相对位置是固定的,也就是说,任何一条指令与它需要访问的模块内部数据之间的相对位置是固定的,那么只需要相对于当前指令加上固定的偏移量就可以访问模块内部数据了。现代的体系结构中,数据的相对寻址往往没有相对与当前指令地址(PC)的寻址方式,所以ELF用了一个很巧妙的办法来得到当前的PC值,然后再加上一个偏移量就可以达到访问相应变量的目的了。得到PC值的方法很多,我们来看看最常用的一种,也是现在ELF的共享对象里面用的一种方法:

 3. 模块间数据访问

        模块间数据访问相对麻烦些,因为地址要等到装载时才能确定。比如上面例子中的变量b,它被定义在其他模块中,并且该地址在装载时才能确定。我们前面提到要使得代码地址无关,基本的思想就是把跟地址相关的部分放到数据段里面,很明显,这些其他模块的全局变量的地址是跟模块装载地址有关的。ELF的做法是在数据段里面建立一个指向这些变量的指针数组,也被称为全局偏移表(Global Offset Table,GOT),当代码需要引用该全局变量时,可以通过GOT中相对应的项间接引用,它的基本机制如图7-7所示。

        当需要访问b时,程序会先找到GOT,然后根据GOT中的变量所对应的项找到变量的目标地址。链接器在装载模块的时候会查找每个变量所在地址,然后将各个项填入GOT,GOT。

未完待续!!!

http://www.yayakq.cn/news/447967/

相关文章:

  • 郑州个人网站开发做威尼斯网站代理算是违法吗
  • frontpage做视频网站中国机械加工外协网最新订单
  • 网站生成静态慢原因淘宝做女鞋在哪个网站找货
  • 网站设置怎么删除数据四川省住房和城乡建设网站
  • 网站建设所有权intitle:做网站
  • 玉环市建设规划局网站浙江人工智能建站系统软件
  • 彩票网站开发app福州高端品牌网站建设
  • 餐饮网站建设设计广州成亿网络
  • dede网站建设如何在百度建立自己的网站
  • 成都网站建设 培训学校企业架构设计
  • 网站 如何备案电子商务网站开发前景
  • 建站公司哪家好都选万维科技wordpress自动多语言
  • 万网网站后台管理lanyun网站开发
  • 微信网站建设口碑好苏州吴中区注册公司
  • 网站开发环境windows7的优点WordPress.AMP
  • html代码做的网站丹阳网站建设方案
  • 哪里可以免费建网站定制vx怎么弄
  • 英文字体展示网站推荐广告设计与制作专业学校
  • 网站建设flash深圳上市公司排名
  • 简述网站建设及维护全过程宣城网站优化
  • 重庆网站seo教程网页设计师培训和继续教育的机会
  • 租号网站咋做如何进行网站改版设计
  • 网站建设多选题大连网站建设#选领超科技
  • 阿里云增加网站自助网站建设公司电话
  • 做个小网站大概多少钱wordpress博客模板缺少插件
  • 网站建设湛江龙岩网站设计培训
  • 网站开发 在线报名好用的浏览器
  • 新彊生产建设兵团网站emlog文章转wordpress
  • 呼和浩特网站开发制作一个网站的一般步骤
  • 咸阳免费做网站好看的电商网站模板下载