一個ARM程序可以被劃分為多個代碼段和數據段,在匯編的時候這些段會被形成一個可執行文件
.text ;正文段,包含程序的指令代碼
.data ;數據段,包含固定的數據,如常量,字符串
.bss ;未初始化數據段,包含未初始化的變量,數組等
.sdata
.sbss
.section .data
;initialized data
.section .bss
;uninitialized data
.section .text
.global _start
_start:
;instruction code
ARM匯編中,子程序的調用一般通過BL
指令實現,在程序中,執行BL 子程序名
即可完成子程序的調用。該指令在執行時完成如下操作:
.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
...