欢迎来到天天文库
浏览记录
ID:37960373
大小:107.50 KB
页数:19页
时间:2019-06-03
《C语言与汇编语言混合编程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C与汇编混合语言编程1、先准备两个程序,一个汇编、一个C语言 在汇编中没有定义变量,因为在一个模块中不会有问题; 在C中定义了两个函数,一些局部变量,一些全局变量; 这样我们要考虑的内容都完备了。 ms.asm mc2.c .386 intsum(inti){ .model
2、flat intk=i; extrncm:near intj=0; public _start ints=0; .code for(j=1;j<=k;j++)s+=j; _start: returns; movax,cs }
3、 movds,ax callm inte=1; stop: intf=2; jmpstop intar[6000000L]; end _start
4、 externvoidm(){ intd; longc; c=1; 2、分别编译成obj文件 ml/c/coffms.asm //指定
5、生成coff格式的obj文件 cl/c/Fomc.obj mc2.c //指定生成的obj文件名为mc.obj link/subsystem:windowsms.objmc.obj //这里使用32位的链接器,要设好lib路径 现在得到ms.obj mc.objms.exe 三个文件3、分析一下源代码,显然程序入口点是_start(在使用/coff参数进行编译时必须有下划线),在汇编中调用了C中的m函数,这是需要重定位的。在C中m调用了sum函数,这也是要重定位的。4、现在利用VC6自
6、带的dumpbin.exe工具,生成解析文件: dumpbin/allms.obj>msobj.txt dumpbin/allmc.obj>mcobj.txt dumpbin/allms.exe>msexe.txt 现在得到三个解析文件,下面逐个分析********************************************************************************msobj.txt*************************************************
7、******************************Microsoft(R)COFFBinaryFileDumperVersion5.12.8078Copyright(C)MicrosoftCorp1992-1998.Allrightsreserved.Dumpoffilems.objFileType:COFFOBJECTFILEHEADERvalueS 14Cmachine(i386) //机器类型为386 3numberofsections //ms.obj
8、文件有三节 41AABB57timedatestampMonNov2914:01:592004 B2filepointertosymboltable //符号表的文件偏移是0B2H Bnumberofs
此文档下载收益归作者所有