该Project属于体力劳动,请支持,能将汇编语句转换成机器码,也支持特定内存结构/数据转换成机器码
如:MOV [EDI+ECX*4+123] , EBP等,指令系统:80X86,SSE1,SSE2,XMM, 不支持SSE4全部源码及Delphi7 和Delphi 2010的 Demo下载地址:http://download.csdn.net/detail/kiboisme/4431030
文件目录:
.\Delphi7Demo Delphi7 Demo文件夹
.\Delphi2010Demo Delphi2010 Demo文件夹
.\I32ToBin I32ToBin全部单元源代码
.\I32ToBinLib I32ToBin链接库及定义单元
CALL m16:32以及JMP m16:32的指令格式的目标代码不知道怎么弄
有知道的朋友回复一下,谢谢
如:MOV [EDI+ECX*4+123] , EBP等,指令系统:80X86,SSE1,SSE2,XMM, 不支持SSE4全部源码及Delphi7 和Delphi 2010的 Demo下载地址:http://download.csdn.net/detail/kiboisme/4431030
文件目录:
.\Delphi7Demo Delphi7 Demo文件夹
.\Delphi2010Demo Delphi2010 Demo文件夹
.\I32ToBin I32ToBin全部单元源代码
.\I32ToBinLib I32ToBin链接库及定义单元
CALL m16:32以及JMP m16:32的指令格式的目标代码不知道怎么弄
有知道的朋友回复一下,谢谢
mov eax,[ebp-$10]
ret
jmp @@a
xor eax,eax
@@a:
mov eax,[ebp-$10]
ret
这就是JMP m16:32的指令格式吧?
mov eax,0
call ShowMessage
RET
这个JMP不是 JMP M16:32,而是JMP Imm8指令,如果距离再远点就是JMP Imm32
op_DEC
呵呵,果然没有db
CloseAsmToBin(HA2B);<----删除这句,语句无法编译时,把对象给释放了,必须要删除这个。
exit;谢谢
好的,现在就复制过去!
如果你的脚本是解释型脚本,用不上这次的代码,如果是编译型的,就绝对用得上,这个就是编译的基础部分。语法分析,我认为重点在表达式分析,
我的作法是:从右到左,找到第一个 不在()以及[]内 并且不在字符串内的 +或/ 把表达式1分为2,
然后继续。
如果没有这个 +/-,就分解*和/,如果还是没有就检查首尾是否是对称的括号,
如果都没有再检查是否是变量,是否是函数,是否数组xxx[],如果都不是,表达式错误,否则已经分解出来了and or shr shl xor not 和 */是同一个级别例子:
A+(B-C)/D-E*F+G[i]第一次分析得到
A 这个是变量名称,通过
+
(B-C)/D 这个是表达式,继续分解
-
E*F ~~
+
G[i] 数组
然后分析子表达式
(B-C)
/
D
以及
E
*
F再分解 (B-C)
一直下去就得到一个表达式树型结构了。然后从第一级开始计算,如果是子表达式,就递归即可。负号和not 得注意点,这个是完全没考虑优化的!!!!!!!!!!!!!!
Access violation at address 00D3FD5C. Write of address 00D3FD5C