OpenEdv-开源电子网

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

清除bss段的原理,求大神指点指点,感谢感谢

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-3-15
在线时间
1 小时
发表于 2021-3-15 11:20:13 | 显示全部楼层 |阅读模式
1金钱
清除bss段的代码部分如下:
  1. //清除BSS段
  2. clean_bss:

  3.         ldr r1, =__bss_start
  4.         ldr r2, =__bss_end
  5.         mov r3, #0
  6. clean:
  7.         str r3, [r1]
  8.         add r1, r1, #4
  9.         cmp r1, r2
  10.         bne clean
复制代码
   想问一下大佬,clean部分清除bss段的原理,为啥将r1寄存器清零后,又要加上4,与r2执行了CMP指令,零标志寄存器不为零的话则循环,我自己的理解:
R1清零→+4→清零→+4,那这样如何起到清除bss段呢,请大佬指点

最佳答案

查看完整内容[请看2#楼]

不是把r1清零,是把r1地址的数据清零。地址再加4,别弄错了,与R2对比,是看是不是把地址开始到地址结束的数据清零。数据和地址要搞清楚
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12695
金钱
12695
注册时间
2012-11-26
在线时间
3712 小时
发表于 2021-3-15 11:20:14 | 显示全部楼层
不是把r1清零,是把r1地址的数据清零。地址再加4,别弄错了,与R2对比,是看是不是把地址开始到地址结束的数据清零。数据和地址要搞清楚
回复

使用道具 举报

3

主题

312

帖子

0

精华

高级会员

Rank: 4

积分
907
金钱
907
注册时间
2011-10-19
在线时间
196 小时
发表于 2021-3-15 13:40:32 | 显示全部楼层
本帖最后由 ufbycd 于 2021-3-15 13:41 编辑

利用r1作间接寻址BSS,所以r1类似于C语言的指针其值为地址;一次清4个字节(32位),所以地址加4
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-3-15
在线时间
1 小时
 楼主| 发表于 2021-3-15 15:48:10 | 显示全部楼层
哦哦哦,我现在清楚了,我是没搞清楚str的作用,太久没看汇编忘记了,str是将r3寄存器中的值0传给r1寄存器的值所指向的地址,那片地址是bss段的部分,而add改变的是寄存器r1的值,我之前一直在纠结add咋改变了地址的值呢,原来是str哪里将r1寄存器的值指向的地址,现在明白了,感谢解答
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-3-15
在线时间
1 小时
 楼主| 发表于 2021-3-15 15:49:46 | 显示全部楼层
jermy_z 发表于 2021-3-15 14:13
不是把r1清零,是把r1地址的数据清零。地址再加4,别弄错了,与R2对比,是看是不是把地址开始到地址结束的 ...

哦哦哦,我现在清楚了,是我没搞清楚str的作用,太久没看汇编忘记了,现在明白了,感谢解答
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-3-15
在线时间
1 小时
 楼主| 发表于 2021-3-15 15:50:25 | 显示全部楼层
ufbycd 发表于 2021-3-15 13:40
利用r1作间接寻址BSS,所以r1类似于C语言的指针其值为地址;一次清4个字节(32位),所以地址加4

哦哦哦,我现在清楚了,是我没搞清楚str的作用,太久没看汇编忘记了,现在明白了,感谢解答
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 21:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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