高级会员
- 积分
- 975
- 金钱
- 975
- 注册时间
- 2016-3-8
- 在线时间
- 267 小时
|
楼主 |
发表于 2020-7-16 00:20:30
|
显示全部楼层
这是用例程方式编译的:
87800000 <_bss_start>:
87800000: 878004d4 ; <UNDEFINED> instruction: 0x878004d4
87800004 <_bss_end>:
87800004: 878004fc ; <UNDEFINED> instruction: 0x878004fc
87800008 <_start>:
.....
87800060 <clean_bss>:
87800060: e51f0068 ldr r0, [pc, #-104] ; 87800000 <_bss_start>
87800064: e51f1068 ldr r1, [pc, #-104] ; 87800004 <_bss_end>
87800068: e3a02000 mov r2, #0
这是用我说的方式编译的:
87800058 <clean_bss>:
87800058: e59f00f8 ldr r0, [pc, #248] ; 87800158 <FIQ_Handler+0x2c>
8780005c: e59f10f8 ldr r1, [pc, #248] ; 8780015c <FIQ_Handler+0x30>
87800060: e3a02000 mov r2, #0
.....
87800158: 878004d4 ; <UNDEFINED> instruction: 0x878004d4
8780015c: 878004fc ; <UNDEFINED> instruction: 0x878004fc
.....
会发现程序向r0,r1导入的值都是 878004d4和878004fc,对应__bss_start和__bss_end地址。
另外例程在87800000 后放的是__bss_start和__bss_end地址。程序是从87800000取指令,会不会意外取到错误指令。 |
|