以下是我的测试项目中的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
.....
.....
我的单元(MainU)驻留在00232C28到00006998.此处,内存地址前缀为0001.从下一个单元开始,它开始为0002,依此类推。
这是什么意思?
同样,'C =','S =''G =''M ='和'ACBP ='?
答案 0 :(得分: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)
:没有细分受众群
答案 1 :(得分:8)
这意味着您的单元MainU
的asm代码从$ 00232C28地址开始,编译单元的长度为$ 00006998字节。
段类(C =)是CODE,在映射文件的开头定义。
细分名称(S =)为.text
段组(G =)为无。
分段模块(M =)为MainU
ACBP属性= A9表示:
同时检查:http://files.mpoli.fi/unpacked/software/programm/general/ss0288.zip/ss0288_4.txt
答案 2 :(得分:1)
根据this Embarcadero docwiki page,A,C和B用于对齐,组合和“大”。似乎该页面没有解释P的含义。十六进制值是一个掩码,虽然我可以看到它没有列出所有值。 (列出的值不允许例如奇数值)