欢迎来到天天文库
浏览记录
ID:62202458
大小:20.41 KB
页数:8页
时间:2021-04-21
《C与汇编混合语言编程.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、个人精品文档,值得您的拥有C与汇编混合语言编程1、先准备两个程序,一个汇编、一个C语言在汇编中没有定义变量,因为在一个模块中不会有问题;在C中定义了两个函数,一些局部变量,一些全局变量;这样我们要考虑的内容都完备了。ms.asmmc2.c.386intsum(inti){.modelflatintk=i;extrncm:nearintj=0;public_startints=0;.codefor(j=1;j<=k;j++)s+=j;_start:returns;movax,cs}movds,axcallminte=1;stop:intf=2;jmpstopintar
2、[6000000L];end_startexternvoidm(){intd;longc;c=1;2、分别编译成obj文件ml/c/coffms.asm//指定生成coff格式的obj文件cl/c/Fomc.objmc2.c//指定生成的obj文件名为mc.objlink/subsystem:windowsms.objmc.obj//这里使用32位的链接器,要设好lib路径现在得到ms.objmc.objms.exe三个文件3、分析一下源代码,显然程序入口点是_start(在使用/coff参数进行编译时必须有下划线),在汇编中调用了C中的m函数,这是需要重定位的。在
3、C中m调用了sum函数,这也是要重定位的。1/19个人精品文档,值得您的拥有4、现在利用VC6自带的dumpbin.exe工具,生成解析文件:dumpbin/allms.obj>msobj.txtdumpbin/allmc.obj>mcobj.txtdumpbin/allms.exe>msexe.txt现在得到三个解析文件,下面逐个分析********************************************************************************msobj.txt****************************
4、***************************************************Microsoft(R)COFFBinaryFileDumperVersion5.12.8078Copyright(C)MicrosoftCorp1992-1998.Allrightsreserved.Dumpoffilems.objFileType:COFFOBJECTFILEHEADERvalueS14Cmachine(i386)//机器类型为3863numberofsections//ms.obj文件有三节41AABB57timedatestampMonNov
5、2914:01:592004B2filepointertosymboltable//符号表的文件偏移是0B2HBnumberofsymbols//共0BH=11个符号0sizeofoptionalheader0characteristics//第一节的头部SECTIONHEADER#1.textname0physicaladdress0virtualaddressDsizeofrawdata//原始数据长度为0DH=13个字节8Cfilepointertorawdata//其在文件内的偏移为8Ch9Afilepointertorelocationtable//其重定
6、位表在文件内的偏移为9Ah0filepointertolinenumbers1numberofrelocations//需重定位的项有1项0numberoflinenumbers60300020flagsCode//这是一个代码段4bytealignExecuteRead2/19个人精品文档,值得您的拥有RAWDATA#1//这里列出了原始数据,恰好13=0DH个字节00000000:668CC8668ED8E800000000EBFEf..f.........
7、-->这是偏移7的位置,查下面的重定位表知道它需要重定位。当前值是00000000,E8代表callRE
8、LOCATIONS#1//这是重定位表SymbolSymbolOffsetTypeAppliedToIndexName-------------------------------------------------------00000007REL32000000007_m//清楚的指出_m需要重定位\\-->在原始数据内的偏移是7\\-->7表示_m在符号表中的索引号//第二节的头部SECTIONHEADER#2.datanameDphysicaladdress0virtualaddress0sizeofrawdata0filepointertor
此文档下载收益归作者所有