ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
标记函数边界
symbol .asmfunc [stack_usage(num)]
.endasmfunc
.asmfunc 和 .endasmfunc 指令用于标记函数边界。这些指令与编译器 -g 选项 (--symdebug:dwarf) 一同使用,以允许以与 C/C++ 函数相同的方式调试汇编代码段。
您不应使用由编译器生成的相同指令(参见AppendixA)来完成汇编调试;这些指令只能由编译器用于为 C/C++ 源文件生成符号调试信息。
符号 是必须显示在标签字段中的标签。
.asmfunc 指令有一个可选参数 stack_usage,它表示该函数最多可以使用 num 个字节。
未包含在 .asmfunc 和 .endasmfunc 指令对中的连续范围汇编代码被赋予以下格式的默认名称:
$ filename: beginning source line: ending source line$
在此示例中,汇编源代码会为 user_func 段生成调试信息。
1 00000000 .sect ".text"
2 .global user_func
3 .global printf
4
5 .align 4
6
7 00000000 .state32
8
9 user_func: .asmfunc
10 00000000 E92D4008 STMFD SP!, {A4, LR}
11 00000004 E28F000C ADR A1, SL1
12 00000008 EBFFFFFC! BL printf
13 0000000c E3A00000 MOV A1, #0
14 00000010 E8BD4008 LDMFD SP!, {A4, LR}
15 00000014 E12FFF1E BX LR
16 .endasmfunc
17
18 .align 4
19 00000018 48 SL1: .string "Hello World!",10,0
00000019 65
0000001a 6C
0000001b 6C
0000001c 6F
0000001d 20
0000001e 57
0000001f 6F
00000020 72
00000021 6C
00000022 64
00000023 21
00000024 0A
00000025 00