该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的指令格式的目标代码不知道怎么弄
有知道的朋友回复一下,谢谢

解决方案 »

  1.   

    嘿嘿,用Delphi7的Demo简单测了下下面的语句,能正确返回Self,呵呵!
    mov eax,[ebp-$10]
    ret
      

  2.   

    不支持标签吗?
    jmp @@a
    xor eax,eax
    @@a:
    mov eax,[ebp-$10]
    ret
    这就是JMP m16:32的指令格式吧?
      

  3.   

    call也不支持,楼主加油啊!——无法学习,只能膜拜
    mov eax,0
    call ShowMessage
    RET
      

  4.   

    这个只负责转换成机器码,不支持标签,
    这个JMP不是 JMP M16:32,而是JMP Imm8指令,如果距离再远点就是JMP Imm32
      

  5.   

    op_DAS
    op_DEC
    呵呵,果然没有db
      

  6.   

    麻烦s11ss在下载那里帮我加上以下评价内容: OutMemo.Lines.Add('Line:' + IntToStr(i) + ' 编译失败.');
     CloseAsmToBin(HA2B);<----删除这句,语句无法编译时,把对象给释放了,必须要删除这个。
     exit;谢谢
      

  7.   

    嘿嘿,这个我也发现了,第2次编译错误语句的时候就会弹框Invalid pointer operation.
    好的,现在就复制过去!
      

  8.   

    以前我也想过要做,但这可真是个辛苦活儿。照着 intel 手册弄的话得累死,于是就想照着 nasm 的指令表生成一个,后来发现那个表还得研究半天然后就算了……
      

  9.   

    这是个体力活,表格出来后,检查每条指令的每种调用格式最终是否正确 花了很多时间和耐心.
    如果你的脚本是解释型脚本,用不上这次的代码,如果是编译型的,就绝对用得上,这个就是编译的基础部分。语法分析,我认为重点在表达式分析,
    我的作法是:从右到左,找到第一个   不在()以及[]内 并且不在字符串内的 +或/ 把表达式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 得注意点,这个是完全没考虑优化的!!!!!!!!!!!!!!
      

  10.   

    多谢(阿发伯),(Seamour)等大牛的支持,在网上一直没找到这个,很有必要分享。
      

  11.   

    为什么我点击编译并运行就会提示 执行时发生错误:
      Access violation at address 00D3FD5C. Write of address 00D3FD5C