100A00 flags
Info //这是一个信息段
Remove
1 byte align
//第一节的原始数据
RAW DATA #1 //原来是说明默认库的信息
00000000: 2D 64 65 66 61 75 6C 74 6C 69 62 3A 4C 49 42 43 -defaultlib:LIBC 逆风编程精品
00000010: 20 2D 64 65 66 61 75 6C 74 6C 69 62 3A 4F 4C 44 -defaultlib:OLD
00000020: 4E 41 4D 45 53 20 NAMES
Linker Directives
-----------------
-defaultlib:LIBC
-defaultlib:OLDNAMES
//第二节的头部
SECTION HEADER #2
.text name
0 physical address
0 virtual address
A6 size of raw data //原始数据长充为 0A6H=166 个字节
8A file pointer to raw data //其在文件内的偏移为 8Ah
130 file pointer to relocation table //其重定位表在文件内的偏移为130h
0 file pointer to line numbers
4 number of relocations //需重定位的项有4项
0 number of line numbers
60500020 flags
Code //这是一个代码段
16 byte align //对齐方式是以16个字节的小段边缘对齐
Execute Read //该代码 可读、可执行
//这点可通过编译参数/SECTION来改变
//第二节的原始数据
//使用W32Dasm打开mc.obj文件,输入偏移地址为8Ah(见第二节的头部说明),反编译下面这段
//与汇编生成的lst文件对比,可以看出下面的数据从偏移0开始的55 8B到偏移44H的5D C3是sum
//函数的数据。紧跟其后直至最后的是函数 m 的代码
//这里可以看出,32位编译器把所有的代码按它们在源代码中出现的顺序“堆积”在obj文件中
RAW DATA #2
00000000: 55 8B EC 83 EC 0C 8B 45 08 89 45 F4 C7 45 F8 00 U......E..E..E..
00000010: 00 00 00 C7 45 FC 00 00 00 00 C7 45 F8 01 00 00 ....E......E....
00000020: 00 EB 09 8B 4D F8 83 C1 01 89 4D F8 8B 55 F8 3B ....M.....M..U.;
00000030: 55 F4 7F 0B 8B 45 FC 03 45 F8 89 45 FC EB E4 8B U....E..E..E....
00000040: 45 FC 8B E5 5D C3 55 8B EC 83 EC 08 C7 45 FC 01 E...].U......E..
00000050: 00 00 00 C7 45 F8 01 00 00 00 C7 05 00 00 00 00 ....E...........
00000060: 01 00 00 00 C7 05 00 00 00 00 01 00 00 00 6A 05 ..............j.
00000070: E8 00 00 00 00 83 C4 04 C7 45 FC 00 00 00 00 EB .........E......
00000080: 09 8B 45 FC 83 C0 01 89 45 FC 81 7D FC 80 5B ..E.....E..}. 本文章更多内容:<<上一页 - 1 - 2 - 3 |