[leftover-crazy@leftover-crazy 3nd]$ vi test.S
@压栈操作 str lr, [sp, #-4]! @函数调用 ldr r0, =hello @取hello标签地址给R0 既参数一的地址 @arm汇编参数传递通过 @R0传递第一个参数 @R1传递第二个参数 @R2传递第三个参数 @R3传递第四个参数 @如果有多于四个参数的传递需要使用堆栈 mov lr, pc ldr pc, show @出栈操作 ldr lr, [sp], #4 @函数返回 mov pc,lr show: .word 0x33f9303c hello: .asciz "hello Uboot part2! /n"
@压栈操作 @str lr, [sp, #-4]! @以上这句等价于 sub sp, sp, #4 str lr, [sp] @函数调用 ldr r0, =hello @取hello标签地址给R0 既参数一的地址 @arm汇编参数传递通过 @R0传递第一个参数 @R1传递第二个参数 @R2传递第三个参数 @R3传递第四个参数 @如果有多于四个参数的传递需要使用堆栈 mov lr, pc ldr pc, show @出栈操作 @ldr lr, [sp], #4 @以上这句等价于 ldr lr, [sp] add sp, sp, #4 @函数返回 mov pc,lr show: .word 0x33f9303c hello: .asciz "hello Uboot part2! /n"
[leftover-crazy@leftover-crazy 3nd]$ arm-2440-linux-gnueabi-as test.S -o test.o [leftover-crazy@leftover-crazy 3nd]$ arm-2440-linux-gnueabi-ld -Ttext=0x30000000 test.o -o test arm-2440-linux-gnueabi-ld: warning: cannot find entry symbol _start; defaulting to 30000000 [leftover-crazy@leftover-crazy 3nd]$ arm-2440-linux-gnueabi-objcopy -I elf32-littlearm test -O binary test.bin [leftover-crazy@leftover-crazy 3nd]$ cp test.bin ../../
Fantasy >tftp 30000000 test.bin Fantasy >go 30000000 ## Starting application at 0x30000000 ... hello Uboot part2! ## Application terminated, rc = 0x0