我正在学习 点亮 LED灯这课(ARM_第8课_第7节),用C实现点亮LED灯。
之前用汇编写的那一节,我用 arm-linux-gnueabihf-gcc 工具集编译出来的可以执行,但是用C写的时候用 arm-linux-gnueabihf-gcc 工具集编译出来的bin文件无法点亮LED灯。
我使用韦老师的编译好的bin文件可以运行,其使用 arm-linux-gcc工具集
请问为何会出现这个样子,代码我最后完全复制粘贴韦老师的,是编译工具的问题吗?但我之前编译 S 文件没出现这个问题。
其反汇编代码如下,我了解x86汇编,但这个ARM汇编真的不太熟悉,还希望大佬们看一下:
led.elf: file format elf32-littlearm
Disassembly of section .text:
00000000 <_start>:
0: e3a0da01 mov sp, #4096 ; 0x1000
4: fa000000 blx c
00000008 :
8: eafffffe b 8
0000000c :
c: b480 push {r7}
e: b083 sub sp, #12
10: af00 add r7, sp, #0
12: 2350 movs r3, #80 ; 0x50
14: f2c5 6300 movt r3, #22016 ; 0x5600
18: 603b str r3, [r7, #0]
1a: 2354 movs r3, #84 ; 0x54
1c: f2c5 6300 movt r3, #22016 ; 0x5600
20: 607b str r3, [r7, #4]
22: 683b ldr r3, [r7, #0]
24: f44f 7280 mov.w r2, #256 ; 0x100
28: 601a str r2, [r3, #0]
2a: 687b ldr r3, [r7, #4]
2c: 2200 movs r2, #0
2e: 601a str r2, [r3, #0]
30: bf00 nop
32: 370c adds r7, #12
34: 46bd mov sp, r7
36: f85d 7b04 ldr.w r7, [sp], #4
3a: 4770 bx lr
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 bcc 10d0d24 <__bss_end__>
4: 62552820 subsvs r2, r5, #32, 16 ; 0x200000
8: 75746e75 ldrbvc r6, [r4, #-3701]! ; 0xfffff18b
c: 332e3920 ; instruction: 0x332e3920
10: 312d302e ; instruction: 0x312d302e
14: 75627537 strbvc r7, [r2, #-1335]! ; 0xfffffac9
18: 3175746e cmncc r5, lr, ror #8
1c: 2e30327e mrccs 2, 1, r3, cr0, cr14, {3}
20: 20293430 eorcs r3, r9, r0, lsr r4
24: 2e332e39 mrccs 14, 1, r2, cr3, cr9, {1}
28: Address 0x0000000000000028 is out of bounds.
Disassembly of section .ARM.attributes:
00000000 <.arm.attributes>:
0: 00002e41 andeq r2, r0, r1, asr #28
4: 61656100 cmnvs r5, r0, lsl #2
8: 01006962 tsteq r0, r2, ror #18
c: 00000024 andeq r0, r0, r4, lsr #32
10: 412d3705 ; instruction: 0x412d3705
14: 070a0600 streq r0, [sl, -r0, lsl #12]
18: 09010841 stmdbeq r1, {r0, r6, fp}
1c: 12040a02 andne r0, r4, #8192 ; 0x2000
20: 15011404 strne r1, [r1, #-1028] ; 0xfffffbfc
24: 18031701 stmdane r3, {r0, r8, r9, sl, ip}
28: 1c021a01 ; instruction: 0x1c021a01
2c: Address 0x000000000000002c is out of bounds.