nasm 的源码增加指令集完成所需要的指令助记符。
现在介绍一下nasm 这个汇编语言程序的源码添加代码的方法和文件,
nasm可以用宏文件头方案解决问题。
我用的是最新版的nasm-2.16rc 2020年11月4日的最新版。说实话到现在已经过两年了。
这nasm的源码目录主要的目录是asm主源码和include 文件头目录 x86 就是指令集数据了。我们看一下。
我们看这三个文件内容, insnsd.c 这个文件是指令数据表,也就是指令助记符的定义。
insnsb.c 这个是自动生成的一个c文件,不可以手工编辑,用insns.pl 脚本提取insns.dat 文件数据。
insnsa.c 这个也是和insnsd.c 文件一样的。一个例本,一个应用本,nasm编译含其它机器码指令集。
这三个文件都是insns.pl 自动生成的。我也不太必要管它的细节问题。因为看源码也花时间。
我们直接看 insns.dat 数据。
这个regs.dat 是 CPU寄存器的数据,一般不要动它,因为现在的处理器都差不多,而且特殊的处理器不太通用。
如果有特别的商业应用。这里可以加定制的CPU处理器的寄存器系列。
这个insns.dat 是数据文件,一般不直接应用到程序中来,可以用上面提的PL语言脚本来分析它。
我们改指令,关键是改它就可以了。
其它的文件不管,有这几个文件就可以做到了。insns.dat 和 insns.pl 这两个处理一下就可以了。
asm 目录下的 nasm.h 是数据定义,这个加参数什么的可以加,不过要在其它地方实现。有深度的理解力才需要。
其它的文件是主文件的处理文件。
如 md5c 生成MD5的,CRC64.C 求和校验的。STRING.C 字符处理的。PATH.C 路径处理的,这些文件是原作者图方便加进来的。
程序主要在linux 下生成应用。可以用其它的环境编译。
Mkfiles 目录下的 msvc.mak 和openwcom.mak 是用 MSVC 2015 C++ 和 openwcom C++ 环境编译的。
VC可以学生版生成64位的windows 命令行程序,兼容 windows 窗口。 openwcom c 现在是兔费使用的。它的特点是386指令集编译。
以前的DOS游戏源码可以用它生成应用版。以前是商业软件。风靡一时。openwcom 环境下编译,参数要留意一下,图形界面不太好弄。
生成没太大的困难,但是产生的一些一般性问题要一一解决。没特别的不太爱用。但生成程序的确很爽快。
自己已经加了指令了,也没有必要公开,因为常用指令的还没跟进到这里,自己留备,汇编语言很多。这是改进方法。
看了一下指令集,amd 的 和 intel 的一般多媒体指令应用很新很全。我没有高端的CPU,所以生成完也没太大的意思。
够用就行,也算是行为指南吧。所有的适合就行,没那多的要求。个人的一个坏习惯总是改不了。一些格式不齐的文档,喜欢像捉虫式的把这些文件格式对齐。
也算是对程序的了解和自己的懒吧,思考度还是有限的。面面俱全也不太容易,有些程序思考的角度自己重制,还Hole不住。有一种无尽的能源浪费的感觉。
世界皆空啊!休息一下,休息一下。最近玩暗黑中文版有重制的,我这是老的改版。可以连战网,有战网注册文件,喜欢玩的可以跟进一下。
有 1.14的网络地图版。以后时间过了就没了,最少不能上网了。
找我索要啊,生活来源也要靠一下的。