您当前的位置: 首页 > 

韦东山

暂无认证

  • 0浏览

    0关注

    506博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C代码中如何使用链接脚本中定义的变量?

韦东山 发布时间:2019-09-19 11:12:17 ,浏览量:0

在线课堂:https://www.100ask.net/index(课程观看) 论  坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taobao.com/ (淘宝)      https://weidongshan.tmall.com/(天猫) 交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载) 交流群二:QQ群:536785813(单片机-嵌入式) 公 众 号:百问科技

版本日期作者说明V12020韦东山技术文档

原文出处:

http://bbs.100ask.org/forum.php?mod=viewthread&tid=16231

在链接脚本中,经常有这样的代码:

SECTIONS
{
.....
. = ALIGN(4);
.rodata : { *(.rodata) }

. = ALIGN(4);
.data : { *(.data) }

. = ALIGN(4);
.got : { *(.got) }

. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) }
_end = .;
}

其中__bss_start, _end 表示BSS段的起始、终止地址。

我们想对这段空间清零时, 1.在汇编代码中,可以直接引用__bss_start, _end,比如:

ldr r0, =__bss_start
ldr r1, =_end

2.在C代码中,我们不能直接引用它们,要这样做:

void clean_bss(void)
{
extern int __bss_start, _end;
int *p = &__bss_start;
   
for (; p             
关注
打赏
1658827356
查看更多评论
0.0704s