ZHCU875Z August 2001 – October 2023 SM320F28335-EP
标记函数边界
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$
在此示例中,汇编源代码会为 userfunc 段生成调试信息。
1 00000000 .sect ".text"
2 .global userfunc
3 .global _printf
4
5 userfunc: .asmfunc
6 00000000 FE02 ADDB SP,#2
00000002 0000
8 00000003 7640! LCR #_printf
00000004 0000
9 00000005 9A00 MOVB AL,#0
10 00000006 FE82 SUBB SP,#2
11 00000007 0006 LRETR
12 .endasmfunc
13
14 00000000 .sect ".econst"
15 00000000 0048 SL1: .string "Hello World!",10,0
00000001 0065
00000002 006C
00000003 006C
00000004 006F
00000005 0020
00000006 0057
00000007 006F
00000008 0072
00000009 006C
0000000a 0064
0000000b 0021
0000000c 000A
0000000d 0000