分享

将Notepad++打造为自己的Win32汇编编辑器

 herowuking 2015-06-07
0.准备工作:
安装NotePad++、插件NppExec、TopMost等
安装ResEdit (安装文件自己问度娘,不会的留言我放网盘共享)
都是绿色的软件,安装很简单,解压到本地目录即可

1.配置NppExec脚本
比如,要将asm汇编文件生成一个exe文件,编辑脚本命令为:
-----------------------------------------------------
cd $(CURRENT_DIRECTORY)
ENV_SET PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib
ml /c /coff /I D:\Masm32\include  $(NAME_PART).asm
link /LIBPATH:D:\Masm32\lib  /subsystem:windows  $(NAME_PART).obj  /out:$(NAME_PART).exe
NPP_RUN $(NAME_PART).exe
上面的脚本只够编译不带资源的exe程序,下面贴上我自己改良的,供参考:
cls
cd $(CURRENT_DIRECTORY)
npp_save
env_set PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib
//这里改为你自己的Masm32目录
NPE_CONSOLE v+
cmd /c "if not exist $(NAME_PART).rc echo 0"
set isExistFile = $(OUTPUTL)
NPE_CONSOLE v-
if $(isExistFile)==0 goto linkWithoutRes
:linkWithRes
echo makeASM2exe with resouce file!
ml /c /coff /I  D:\Masm32\include $(NAME_PART).asm
rc /r $(NAME_PART).rc
link /LIBPATH:D:\Masm32\lib  /subsystem:windows  /machine:ix86  $(NAME_PART).res $(NAME_PART).obj
NPP_RUN $(NAME_PART).exe
goto END
:linkWithoutRes
echo makeASM2exe without resouce file.
ml /c /coff /I  D:\Masm32\include $(NAME_PART).asm
link /LIBPATH:D:\Masm32\lib  /subsystem:windows  /machine:ix86  $(NAME_PART).obj  /out:$(NAME_PART).exe
NPP_RUN $(NAME_PART).exe
:END
unset isExistFile
env_unset PATH
echo work done!
说明:上面的脚本能够自动判断Notepad++当前打开的asm文件目录下有没有同名的.rc资源文件,有则自动编译成res文件,链接到exe中,有个限制:rc资源文件必须和asm文件同名。这个应该不是问题,一般都是这样的哈,当然可以修改脚本,例如没有找到$(NAME_PART).rc或*.rc就调用inputbox函数,交互一下文是否有资源文件,这样也能轻松得到自己想要的效果~

还有一个脚本,是根据Notepad++当前打开的asm文件,自动用ResEdit打开.rc资源文件。或者没有的话自动创建一个空的.rc同名文件,用ResEdit打开:
cls
cd $(CURRENT_DIRECTORY)
env_set PATH = D:\GreenProgram\ResEditor\ResEdit-x64  //这里改为你自己的ResEdit目录
NPE_CONSOLE v+
cmd /c "if not exist $(NAME_PART).rc echo 0"
set isExistFile = $(OUTPUTL)
NPE_CONSOLE v-
echo $(isExistFile)
if $(isExistFile)==0 goto createRCfile
goto openRCfile
:createRCfile
cls
sel_saveto $(NAME_PART).rc
:openRCfile
cls
ResEdit.exe $(NAME_PART).rc
unset isExistFile 
env_unset PATH

至于ml,link等命令的参数,请参考相应的参数选项
这个编译生成了对应的exe之后,最后会调用这个生成的exe程序

将文件编译成lib库的脚本
-----------------------
cd $(CURRENT_DIRECTORY)
ENV_SET PATH = D:\Masm32\bin; D:\Masm32\include; D:\Masm32\lib
ml /c /coff /I D:\Masm32\include  $(NAME_PART).asm
link -lib *.obj  /out:$(NAME_PART).lib


编译C(最好是安装好MinGW配置好PATH环境变量):
---------------------------------------------
ENV_SET PATH = C:\msys\1.0\mingw\bin
cmd /c "gcc -o $(CURRENT_DIRECTORY)\$(NAME_PART).exe  $(FULL_CURRENT_PATH) "
$(CURRENT_DIRECTORY)\$(NAME_PART).exe

编译C++(最好是安装好MinGW配置好PATH环境变量):
---------------------------------------------
ENV_SET PATH = C:\msys\1.0\mingw\bin
cmd /c "g++ -o $(CURRENT_DIRECTORY)\$(NAME_PART).exe  $(FULL_CURRENT_PATH) "
$(CURRENT_DIRECTORY)\$(NAME_PART).exe

2.将这些脚本添加到【宏】菜单,并分配快捷键:
Notepad++中,【插件】-->【NppExec】-->【Advanced Options...】
勾选"Place to the Macros submenu"
在下面的Associate script下拉列表里面选择并添加即可

分配快捷键:
【宏】-->【管理快捷键】-->选择“Plugin commands”
依次找到刚才设定的几个脚本,分配快捷键即可!

另外有一点,就是用NotePad++写的代码,他内部默认使用的是UTF8编码,而masm32默认是采用的Ansi的API函数,所以,此时在NotePad++中显示正常的中文文字,如果编译成exe之后,在exe中显示的就是乱码了,有两种方法,一种是代码前面加上UNICODE equ 1,表示使用Unicode的API宽函数,还有一种方法就是将NotePad++的编辑器,默认修改成ANsi的GB2312的编码


整体效果还是不错的:

 
 
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多