OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5285|回复: 6

汇编文件和链接脚本中有个小问题!!!

[复制链接]

57

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2019-11-13
在线时间
40 小时
发表于 2020-2-25 23:17:54 | 显示全部楼层 |阅读模式
本帖最后由 uestczcl 于 2020-2-25 23:34 编辑

Image.png
这里没有声明,编译器能知道它吗?

Image [2].png
还有在链接脚本中,__bss_start=.  这里的__bss_start不用声明吗?直接就写__bss_start???????
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-2-26 10:00:24 | 显示全部楼层
本帖最后由 xiaotaotao 于 2020-2-26 10:29 编辑

兄弟你可以看看我以前写的关于这方面的问题:
http://note.youdao.com/noteshare ... 8A6AECEE907105AE97E
其次呢,链接脚本中定义变量跟shell脚本定义变量差不多,都是不用申明的,就像你说的直接写
森罗万象
回复 支持 反对

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-2-26 10:25:07 | 显示全部楼层
用 .global 申明的符号表示需要在其他源文件中被引用到,没用.global申明的符号其实就是c语言中的static静态变量。
bss_loop很明显不需要使用 .global来申明, bss_loop在这里的作用就是函数内部的一个循环作用,类似于C语言中while或for循环之类的。
森罗万象
回复 支持 反对

使用道具 举报

57

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2019-11-13
在线时间
40 小时
 楼主| 发表于 2020-2-26 10:29:06 | 显示全部楼层
xiaotaotao 发表于 2020-2-26 10:00
兄弟你可以看看我以前写的关于这方面的问题:
http://note.youdao.com/noteshare?id=347fb0369ed3943ed16e ...

兄弟 这个是把链接脚本中的定义 直接放在汇编的启动文件start.s中了。链接脚本中的定义变量不需要像C语言那样指定它的类型吗?
回复 支持 反对

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-2-26 10:32:20 | 显示全部楼层
uestczcl 发表于 2020-2-26 10:29
兄弟 这个是把链接脚本中的定义 直接放在汇编的启动文件start.s中了。链接脚本中的定义变量不需要像C语言 ...

我的文档中写了,链接脚本对变量的赋值、或引用也好  其实都是针对变量的内存地址而言,不用指定类型,跟shell定义差不多,直接写
森罗万象
回复 支持 反对

使用道具 举报

57

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2019-11-13
在线时间
40 小时
 楼主| 发表于 2020-2-26 12:35:48 | 显示全部楼层
xiaotaotao 发表于 2020-2-26 10:25
用 .global 申明的符号表示需要在其他源文件中被引用到,没用.global申明的符号其实就是c语言中的static静 ...

为什么_bss_start 和_bss_end要用.global来修饰?
回复 支持 反对

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-2-26 15:09:51 | 显示全部楼层
uestczcl 发表于 2020-2-26 12:35
为什么_bss_start 和_bss_end要用.global来修饰?

__bss_start和__bss_end定义在汇编源文件中,而链接脚本中对它们进行了赋值操作,也就是在另外的文件中用到了这两个符号,所以要使用.global申明到全局范围。
你把下面这些都去掉应该也是可以的:你可以试试!
TIM截图20200226150920.png
森罗万象
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 05:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表