#define printf 0x43e11ad0
.section .text //表明下面全是代码段
.global _start
_start:
push {lr}
//printf("bss_start=0x%x, bss_end=0x%x\n", __bss_start__, __bss_end__);
//给printf传递3个参数
ldr r0, =fmt
ldr r1, =__bss_start__
ldr r2, =__bss_end__
mov lr, pc
ldr pc, =printf
bl clear_bss //清除bss段
pop {pc} //回到uboot
clear_bss:
ldr r0, =__bss_start__
ldr r1, =ldr r2, =__bss_end__
mov r2, #0
1:
cmp r1, r2
srtne r2, [r0]
addne r0, #4
bne 1b
mov pc, lr
.section .rodata //表明下面全是只读数据段
fmt:
.asciz "bss_start=0x%x, bss_end=0x%x\n"
.section .bss //表明下面全是bss段
.word 0x12345678
.word 0x87654321
查看可.out文件里程序中的所有标号