##ARM汇编程序结构 一个ARM程序可以被划分为多个代码段和数据段,在汇编的时候这些段会被形成一个可执行文件 ``` .text ;正文段,包含程序的指令代码 .data ;数据段,包含固定的数据,如常量,字符串 .bss ;未初始化数据段,包含未初始化的变量,数组等 .sdata .sbss ``` ``` .section .data ;initialized data .section .bss ;uninitialized data .section .text .global _start _start: ;instruction code ``` ##子程序调用 ARM汇编中,子程序的调用一般通过`BL`指令实现,在程序中,执行`BL 子程序名`即可完成子程序的调用。该指令在执行时完成如下操作: 1. 将子程序的返回地址保存在LR 2. 将PC指向子程序的入口 3. 子程序执行完毕需要返回时只需将PC指向LR即可 ``` .text .global _start _start: ldr r0, =0x3ff5000 ldr r1, 0xff str r1, [r0] ldr r0, =0x3ff5000 ldr r1, 0x01 str r1, [r0] bl print_text ;执行跳转 ... print_text: ... mov pc, bl ... ```