搜索
bottom↓
回复: 20
打印 上一主题 下一主题

应许工要求,三菱PWM文件反汇编器PMWCompiler可执行程序及源码

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2009-4-17 00:30:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
应许工要求,做了一个三菱文件到语句表的反汇编程序。
请大家测试。
可执行程序:
点击此处下载 ourdev_437211.rar(文件大小:1.04M) (原文件名:PMWCompiler090417.rar)
源码:
点击此处下载 ourdev_437212.rar(文件大小:3.69M) (原文件名:PMWCompiler_src090417.rar)
开发环境VC2005

出0入0汤圆

2
发表于 2009-4-17 00:49:51 | 只看该作者
顶上去

出0入0汤圆

3
 楼主| 发表于 2009-4-17 00:50:21 | 只看该作者
居然有人在 哈哈
头像被屏蔽

出0入0汤圆

4
发表于 2009-4-17 01:05:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

5
发表于 2009-4-17 07:49:56 | 只看该作者
版主起的真早。
阿莫睡的真晚。

签定完毕。。。

出0入0汤圆

6
发表于 2009-4-17 08:05:40 | 只看该作者
有专家就好

出0入0汤圆

7
发表于 2009-4-17 08:58:33 | 只看该作者
看看去。

出0入0汤圆

8
发表于 2009-4-19 20:23:11 | 只看该作者
lz赞一个, 许工把关没的说

出0入0汤圆

9
 楼主| 发表于 2009-4-20 19:57:11 | 只看该作者
修改一下许工提出的一些问题
1. ANI 类指令后编译出错,见下图。
  修改

2. 请给出目前支持的指令集,未支持的指令集在反编译过程中给出出错信息,便于用户查找原因。
见帖子:上面有的全有,没有的也没加。
  http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3252848&bbs_page_no=1&bbs_id=3041

3. END 指令未反编译。
  增加了。

4. 输出文件中  指令 和 软元件  之间的空格需调整到上下对齐。
  中间空格换做TAB 自动对齐

5. ourDEV.com 信息笔误,需修改为:ourDEV.cn  
  已经修改  一直以为两个都可以呢

出0入0汤圆

10
 楼主| 发表于 2009-4-20 20:01:25 | 只看该作者
可执行程序ourdev_438324.rar(文件大小:1.04M) (原文件名:PMWCompiler090420.rar)
源码ourdev_438325.rar(文件大小:51K) (原文件名:PMWCompiler_src090420.rar)

出0入0汤圆

11
发表于 2009-5-17 14:15:06 | 只看该作者
顶一把!

出0入0汤圆

12
发表于 2009-8-21 12:11:44 | 只看该作者
【13楼】的可执行程序ourdev_438324.rar(文件大小:1.04M) (原文件名:PMWCompiler090420.rar)  

也有问题的啊?

(原文件名:Image00015.jpg)

出0入0汤圆

13
发表于 2009-8-21 12:15:00 | 只看该作者
请问哪儿能下到完善的版本?谢谢!

出0入0汤圆

14
发表于 2011-3-1 17:27:48 | 只看该作者
回复【楼主位】adolfshxq
-----------------------------------------------------------------------

楼主,看了你编写的工程代码(ourdev_438325.rar(文件大小:51K)),对照你给出的三菱PWM文件指令集发现你缺少了
关于LDI,OUT指令的转换。
今天特意在你的工程基础上添加了几行代码用来转换LDI,OUT指令。分享如下:

                //by hebin 2011-3-1
                //LDI  指令区
                else if(inst[1]==0x34)//LD X(0~377)
                {
                        str.Format(_T("LDI\tX%o"),inst[0]);
                        InstList.AddTail(str);
                }
                else if (inst[1]==0x35)//LD Y(0~377)
                {
                        str.Format(_T("LDI\tY%o"),inst[0]);
                        InstList.AddTail(str);
                }
                else if (inst[1]<=0x3D&&inst[1]>=0x38)//LD M(0~1535)
                {
                        str.Format(_T("LDI\tM%u"),(inst[1]-0x38)*0x100+inst[0]);  //?????????????
                        InstList.AddTail(str);
                }
                else if (inst[1]<=0xAD&&inst[1]>=0xA8)//LD M(1536~3071)
                {
                        str.Format(_T("LDI\tM%u"),(inst[1]-0xA8)*0x100+inst[0]+0x600); //?????????????
                        InstList.AddTail(str);
                }
                else if (inst[1]==0x3F)//LD M(8000~8255)
                {
                        str.Format(_T("LDI\tM8%03u"),inst[0]);
                        InstList.AddTail(str);
                }
                else if (inst[1]<=0x33&&inst[1]>=0x30)//LD S(000~999)
                {
                        str.Format(_T("LDI\tS%u"),(inst[1]-0x30)*0x100+inst[0]);
                        InstList.AddTail(str);
                }
                else if (inst[1]==0x36)//LD T(000~255)
                {
                        str.Format(_T("LDI\tT%u"),inst[0]);
                        InstList.AddTail(str);
                }
                else if (inst[1]==0x3E)//LD C(000~255)
                {
                        str.Format(_T("LDI\tC%u"),inst[0]);
                        InstList.AddTail(str);
                }
                //**********************************************
                //end LDI by hebin 2011-3-1



                //by hebin 2011-3-11
                //补充OUT 指令
                else if (inst[1]<=0xCD&&inst[1]>=0xC8)//OUT M(0~1535)
                {
                        str.Format(_T("OUT\tM%u"),(inst[1]-0xC8)*0x100+inst[0]);  
                        InstList.AddTail(str);
                }
                else if (inst[1]<=0xAD&&inst[1]>=0xA8)//OUT M(1536~3071)
                {
                        str.Format(_T("OUT\tM%u"),(inst[1]-0xA8)*0x100+inst[0]+0x600);
                        InstList.AddTail(str);
                }
                else if (inst[1]==0x8F)//OUT M(8000~8255)
                {
                        str.Format(_T("OUT\tM8%03u"),inst[0]);
                        InstList.AddTail(str);
                }
                else if (inst[1]<=0x83&&inst[1]>=0x80)//OUT S(000~999)
                {
                        str.Format(_T("OUT\tS%u"),(inst[1]-0x80)*0x100+inst[0]);
                        InstList.AddTail(str);
                }

                //end 3-11


我简单测试了一下,挺好用,大家一起学习下,看看还有什么错误没。

另外,我对代码中有语句看的不是很明白
str.Format(_T("LDI\tM%u"),(inst[1]-0x38)*0x100+inst[0]);  
谁能给我解释一下,什么意思啊?

出0入0汤圆

15
发表于 2012-11-20 19:17:02 | 只看该作者
Thanks for sharing!

出0入0汤圆

16
发表于 2022-6-24 16:28:25 | 只看该作者
支持楼主,学习一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 05:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表