以下是我的测试项目中MAP文件的示例...
.......
.......
.......
0001:001EFC14 00000020 C=CODE S=.text G=(none) M=Vcl.CategoryButtons ACBP=A9
0001:001EFC34 0000284C C=CODE S=.text G=(none) M=Vcl.SysStyles ACBP=A9
0001:001F2480 000407A8 C=CODE S=.text G=(none) M=Vcl.Styles ACBP=A9
0001:00232C28 00006998 C=CODE S=.text G=(none) M=MainU ACBP=A9
0002:00000000 000000B4 C=ICODE S=.itext G=(none) M=System ACBP=A9
0002:000000B4 00000008 C=ICODE S=.itext G=(none) M=SysInit ACBP=A9
.....
.....
Run Code Online (Sandbox Code Playgroud)
我的单元(MainU)驻留在00232C28到00006998.此处,内存地址前缀为0001.从下一个单元开始,它开始为0002,依此类推.
这是什么意思?
同样,什么是'C =','S =''G =''M ='和'ACBP ='?
And*_*den 15
格式为:
SegmentId:StartAddress Length C=SegmentClass S=SegmentName G=SegmentGroup M=ModuleName
这ACBP与对齐有关,但我无法告诉你十六进制数字是什么意思.
C=CODE:代码段
C=ICODE:初始化代码段
C=DATA:(已初始化)数据段
C=BSS:(未初始化)数据段
C=TLS:线程本地存储
G=(none):没有细分群组
这意味着你的单元的asm代码MainU从$ 00232C28地址开始,编译单元的长度是$ 00006998字节.
段类(C =)是CODE,在映射文件的开头定义.
段名称(S =)是 .text
段组(G =)为无.
分段模块(M =)是 MainU
ACBP属性= A9表示:
另请查看:http://files.mpoli.fi/unpacked/software/programm/general/ss0288.zip/ss0288_4.txt