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 子程序名
即可完成子程序的调用。该指令在执行时完成如下操作:
- 将子程序的返回地址保存在LR
- 将PC指向子程序的入口
- 子程序执行完毕需要返回时只需将PC指向LR即可
.text.global _start_start:ldr r0, =0x3ff5000ldr r1, 0xffstr r1, [r0]ldr r0, =0x3ff5000ldr r1, 0x01str r1, [r0]bl print_text ;执行跳转...print_text:...mov pc, bl...