Tasm是一个类asm的编译器+虚拟机,把源代码编译成bytecode并丢入VM中执行。

它的前身是OllyMachine,因此,基本语法雷同于OllyMachine,OM的帮助文件请见:
http://www.luocong.com/om


【补充说明】
一、写这个编译器的初衷是为了改善OllyMachine难用的几个特性(例如不能自定义变量名,寻址方式不方便等),但是OllyDbg 2.0迟迟不发布正式版,3年又3年了,究竟要等到什么时候啊?不想把这个工程烂在自己手里,我也先丢个alpha版吧。


二、取消了OllyMachine的那几十个难记的寄存器,取而代之的是可以自定义变量名(总共可以自定义255个,应该够用了吧?)
变量名无需声明,可直接使用,命名规则同C的语法。例如:
mov i, 1

注意:变量的初始值是0,例如:
mov i, j
那么i和j的值都为0,因为j的初始值是0,然后赋值给i。


三、寻址方式作了改进,可以支持:
mov dword ptr [0x78787878], 0x12345678
mov word ptr[0x78787878], 0x1234
等等。


四、函数的返回值储存在保留的变量rtx中(RTX: ReTurn X的意思)。
例如:
invoke malloc, 1000
mov buffer, rtx


五、框架基本搭好了,剩下的是补充API的体力活,但我现在没时间补完了。
为了测试用,我仅仅写了以下的API,使用的语法请见MSDN:
"printf",
"malloc",
"free",
"memset",
"fopen",
"fclose",
"fread",
"fwrite",
"fgetc",
"fputc",
"fseek",
"ftell",
"feof",
"rewind",
"PathFileExists",
"DeleteFile",
"RegOpenKeyEx",
"RegCloseKey",



- THE END -

罗聪
2010-12-27

上传的附件 Tasm_20101227.rar