- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为没有虚拟内存(或者更准确地说是操作系统)的机器编写一个 C 程序,并且我在 .rodata 部分,或者更准确地说是那里的东西遇到了一些困难。出现的问题是,尽管在链接期间这些节位于明确定义的地址,但当程序开始执行时,它正在被重新定位。
例如:假设我的程序开始链接到从 0x1000 开始,当它被执行时,应该在 0x1000 的内容被重新定位在 0xff1000。
话虽如此,我的问题是通常进入 .rodata 的内容是由编译器(gcc)“硬编码”的,并且由于重定位和 gcc 对它们的地址进行硬编码,我有点丢失了内存中的 .rodata 常量,因此它们获得绝对偏移量而不是相对偏移量。
有没有一种方法可以让 .rodata 常量具有相对偏移量而不是绝对偏移量。相对,我的意思是相对于任何事件的进程寄存器?
最佳答案
根据架构,.rodata 可能会被任意重定位到特定的内存区域(例如 ROM)。此类信息可在您的机器数据表中找到。
如果是这种情况,您必须使用链接描述文件告诉链接将您的 .rodata 部分放在正确的区域中。
可以在此处找到有关 GCC 链接器脚本如何工作的一个很好的概述:
http://www.scoberlin.de/content/media/http/informatik/gcc_docs/ld_3.html
此外,您可以在 Internet 上轻松找到许多特定于体系结构的链接脚本。
希望有帮助!
关于c - .rodata 搬迁相关问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090791/
说到wordpress搬家,相信大部分wp玩家还是能够轻松解决问题,可是对于新手相信会遇到不少麻烦问题吧,下面跟大家分享下wordpress搬家详细步骤方法,希望能够帮到刚刚接触wordpress这
我是一名优秀的程序员,十分优秀!