请教内建函数 DATA_SEGMENT_ALIGN

发布于 2022-09-29 22:12:39 字数 1841 浏览 26 评论 0

下边这段是info ld里边的文档,一直没有看懂他的意思,哪位能解释一下。

PS:网上的ld中文版本里边,到这个地方就没有翻译了。郁闷。。。。

DATA_SEGMENT_ALIGN(maxpagesize, commonpagesize)
    This is equivalent to either

              (ALIGN(maxpagesize) + (. & (maxpagesize - 1)))
              

    or

              (ALIGN(maxpagesize) + (. & (maxpagesize - commonpagesize)))
              

    depending on whether the latter uses fewer commonpagesize sized pages for the data segment (area between the result of this expression and DATA_SEGMENT_END) than the former or not. If the latter form is used, it means commonpagesize bytes of runtime memory will be saved at the expense of up to commonpagesize wasted bytes in the on-disk file.

    This expression can only be used directly in SECTIONS commands, not in any output section descriptions and only once in the linker script. commonpagesize should be less or equal to maxpagesize and should be the system page size the object wants to be optimized for (while still working on system page sizes up to maxpagesize).

    Example:

                . = DATA_SEGMENT_ALIGN(0x10000, 0x2000);
              

DATA_SEGMENT_END(exp)
    This defines the end of data segment for DATA_SEGMENT_ALIGN evaluation purposes.

                . = DATA_SEGMENT_END(.);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

魔法唧唧 2022-10-06 22:12:39

偶也领悟领悟.

青衫负雪 2022-10-06 22:12:39

看来版主最近在玩股。

2天了,还没有找到答案。

这段英文的意思我也不明白。

  1. the latter uses fewer commonpagesize

复制代码

其中的latter指的是什么好像不是很明确。

[ 本帖最后由 Benson_linux 于 2007-8-8 19:37 编辑 ]

段念尘 2022-10-06 22:12:39

做个实验:

echo 'main(){}' > dummy.c

gcc dummy.c -Wl, --verbose &> dummy.log

然后观察 dummy.log 里面就有 DATA_SEGMENT_ALIGN()和DATA_SEGMENT_END()的输出。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文