• 已解决 68331 个问题
  • 已帮助 5964 位优秀工程师

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

qiuqiu 2021-03-16 浏览量:199
清除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
m data-ke-onclick="copycode($('code_UMa'));">复制代码
   想问一下大佬,clean部分清除bss段的原理,为啥将r1寄存器清零后,又要加上4,与r2执行了CMP指令,零标志寄存器不为零的话则循环,我自己的理解:
R1清零→+4→清零→+4,那这样如何起到清除bss段呢,请大佬指点
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 根据你的程序,r1是bss的开始地址,r2是bss的结束地址,所以后面是4个字节清除一次,循环从r1到r2啊。

    所以每次r1加4。这里加4估计是因为是32bit系统。

    • 发布于 2021-03-17
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:0
清除bss段的原理,求大神指点指点,感谢感谢