C与汇编混合语言编程.docx

C与汇编混合语言编程.docx

ID:62202458

大小:20.41 KB

页数:8页

时间:2021-04-21

C与汇编混合语言编程.docx_第1页
C与汇编混合语言编程.docx_第2页
C与汇编混合语言编程.docx_第3页
C与汇编混合语言编程.docx_第4页
C与汇编混合语言编程.docx_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。