搭建《虚拟机的设计与实现:c/c++》中的HEC虚拟机的调试环境

  在阅读编程书籍的时候,如果能边看书边对着机器操作,那么效果会非常好,刚才在看Bill Blunden的《Virtual Machine Design and Implemetation in  C/C++》(中文翻译书名叫做《虚拟机的设计与实现:c/c++》)的第三章,作者从main函数入手,将虚拟机的执行流程娓娓道来。如果能边调试那段代码边看书,这样效果会很不错。因此打开随书的源码的目录,进入win32\hecvm目录(这里是vm的源代码),打开hecvm.mak进行分析(内容如下):
#  /Fefilename  sets the name of the executable
#  /Idirectory    sets a single include directory
#  /link sets linker options to include extra libraries
#  /Ddefine defines a macro

OPTIONS=/nologo /FeHECVM.EXE /I.\ /DWINDOWS_32 
LINK_OPTIONS=/link /DEFAULTLIB:ws2_32.lib

HECVM.EXE:
CL.EXE $(OPTIONS) main.c $(LINK_OPTIONS)

虽然从来没用过nmake,不过这段make脚本非常简单(作者的注释也非常仔细),直接看最后一行,调用cl.exe编译main.c,参数为
/nologo /Fe /I /D, 查查msdn,马上就知道,需要包含当前目录(/I.\), 需要定义一个预处理定义WINDOWS_32(/D WINDOWS_32),
然后进行link操作,需要包含库ws2_32.lib,因此,打开vs2005,创建一个空项目,将hecvm里的代码全部都拷贝到空项目的vcproj文件所在
的那个目录下去,然后把main.c加入到空项目中,设置项目属性(包含当前目录,增加预处理定义WINDOWS_32, 链接选择附加ws2_32.lib),生成
改项目,成功了!

可以调试了!

你可能感兴趣的:(C++,c,虚拟机,windows,C#)