diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4a19da5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.pyc
+Thumbs.db
diff --git a/README.md b/README.md
index ce39ca1..1789699 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,6 @@ https://github.com/nccgroup/IODIDE
Released under AGPL see LICENSE for more information
-Includes the PowerPC disassembler from cxmon by Christian Bauer, Marc Hellwig (http://cxmon.cebix.net)
-
## Documentation
https://github.com/nccgroup/IODIDE/wiki
@@ -22,6 +20,8 @@ https://github.com/nccgroup/IODIDE/wiki
* pyserial
+* capstone
+
## Platforms
Tested on Windows 7
\ No newline at end of file
diff --git a/disass.dll b/disass.dll
deleted file mode 100644
index 46c06b2..0000000
Binary files a/disass.dll and /dev/null differ
diff --git a/disass_ppc/disass/Backup/disass.sln b/disass_ppc/disass/Backup/disass.sln
deleted file mode 100644
index f685390..0000000
--- a/disass_ppc/disass/Backup/disass.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "disass", "disass\disass.vcproj", "{0EFAD09B-472F-4309-865E-E026D04B7966}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {0EFAD09B-472F-4309-865E-E026D04B7966}.Debug|Win32.ActiveCfg = Debug|Win32
- {0EFAD09B-472F-4309-865E-E026D04B7966}.Debug|Win32.Build.0 = Debug|Win32
- {0EFAD09B-472F-4309-865E-E026D04B7966}.Release|Win32.ActiveCfg = Release|Win32
- {0EFAD09B-472F-4309-865E-E026D04B7966}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/disass_ppc/disass/Backup/disass.v12.suo b/disass_ppc/disass/Backup/disass.v12.suo
deleted file mode 100644
index f45496e..0000000
Binary files a/disass_ppc/disass/Backup/disass.v12.suo and /dev/null differ
diff --git a/disass_ppc/disass/UpgradeLog.htm b/disass_ppc/disass/UpgradeLog.htm
deleted file mode 100644
index 0c82660..0000000
Binary files a/disass_ppc/disass/UpgradeLog.htm and /dev/null differ
diff --git a/disass_ppc/disass/debug/disass.dll b/disass_ppc/disass/debug/disass.dll
deleted file mode 100644
index 9c17568..0000000
Binary files a/disass_ppc/disass/debug/disass.dll and /dev/null differ
diff --git a/disass_ppc/disass/debug/disass.exe b/disass_ppc/disass/debug/disass.exe
deleted file mode 100644
index 58a0791..0000000
Binary files a/disass_ppc/disass/debug/disass.exe and /dev/null differ
diff --git a/disass_ppc/disass/debug/disass.exp b/disass_ppc/disass/debug/disass.exp
deleted file mode 100644
index 8fec663..0000000
Binary files a/disass_ppc/disass/debug/disass.exp and /dev/null differ
diff --git a/disass_ppc/disass/debug/disass.ilk b/disass_ppc/disass/debug/disass.ilk
deleted file mode 100644
index 44fa5a4..0000000
Binary files a/disass_ppc/disass/debug/disass.ilk and /dev/null differ
diff --git a/disass_ppc/disass/debug/disass.lib b/disass_ppc/disass/debug/disass.lib
deleted file mode 100644
index 4698589..0000000
Binary files a/disass_ppc/disass/debug/disass.lib and /dev/null differ
diff --git a/disass_ppc/disass/debug/disass.pdb b/disass_ppc/disass/debug/disass.pdb
deleted file mode 100644
index 89c46db..0000000
Binary files a/disass_ppc/disass/debug/disass.pdb and /dev/null differ
diff --git a/disass_ppc/disass/disass.ncb b/disass_ppc/disass/disass.ncb
deleted file mode 100644
index 141d2cc..0000000
Binary files a/disass_ppc/disass/disass.ncb and /dev/null differ
diff --git a/disass_ppc/disass/disass.sdf b/disass_ppc/disass/disass.sdf
deleted file mode 100644
index 17ce641..0000000
Binary files a/disass_ppc/disass/disass.sdf and /dev/null differ
diff --git a/disass_ppc/disass/disass.sln b/disass_ppc/disass/disass.sln
deleted file mode 100644
index f5960e6..0000000
--- a/disass_ppc/disass/disass.sln
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2013 for Windows Desktop
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "disass", "disass\disass.vcxproj", "{0EFAD09B-472F-4309-865E-E026D04B7966}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {0EFAD09B-472F-4309-865E-E026D04B7966}.Debug|Win32.ActiveCfg = Debug|Win32
- {0EFAD09B-472F-4309-865E-E026D04B7966}.Debug|Win32.Build.0 = Debug|Win32
- {0EFAD09B-472F-4309-865E-E026D04B7966}.Release|Win32.ActiveCfg = Release|Win32
- {0EFAD09B-472F-4309-865E-E026D04B7966}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/disass_ppc/disass/disass.suo b/disass_ppc/disass/disass.suo
deleted file mode 100644
index f45496e..0000000
Binary files a/disass_ppc/disass/disass.suo and /dev/null differ
diff --git a/disass_ppc/disass/disass.v12.suo b/disass_ppc/disass/disass.v12.suo
deleted file mode 100644
index ec0b733..0000000
Binary files a/disass_ppc/disass/disass.v12.suo and /dev/null differ
diff --git a/disass_ppc/disass/disass/Debug/BuildLog.htm b/disass_ppc/disass/disass/Debug/BuildLog.htm
deleted file mode 100644
index f6af21d..0000000
Binary files a/disass_ppc/disass/disass/Debug/BuildLog.htm and /dev/null differ
diff --git a/disass_ppc/disass/disass/Debug/disass.dll.embed.manifest b/disass_ppc/disass/disass/Debug/disass.dll.embed.manifest
deleted file mode 100644
index 03424d2..0000000
--- a/disass_ppc/disass/disass/Debug/disass.dll.embed.manifest
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/disass_ppc/disass/disass/Debug/disass.dll.embed.manifest.res b/disass_ppc/disass/disass/Debug/disass.dll.embed.manifest.res
deleted file mode 100644
index 06b6c59..0000000
Binary files a/disass_ppc/disass/disass/Debug/disass.dll.embed.manifest.res and /dev/null differ
diff --git a/disass_ppc/disass/disass/Debug/disass.dll.intermediate.manifest b/disass_ppc/disass/disass/Debug/disass.dll.intermediate.manifest
deleted file mode 100644
index c637eff..0000000
--- a/disass_ppc/disass/disass/Debug/disass.dll.intermediate.manifest
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/disass_ppc/disass/disass/Debug/disass.exe.embed.manifest b/disass_ppc/disass/disass/Debug/disass.exe.embed.manifest
deleted file mode 100644
index 03424d2..0000000
--- a/disass_ppc/disass/disass/Debug/disass.exe.embed.manifest
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/disass_ppc/disass/disass/Debug/disass.exe.embed.manifest.res b/disass_ppc/disass/disass/Debug/disass.exe.embed.manifest.res
deleted file mode 100644
index 84deeec..0000000
Binary files a/disass_ppc/disass/disass/Debug/disass.exe.embed.manifest.res and /dev/null differ
diff --git a/disass_ppc/disass/disass/Debug/disass.exe.intermediate.manifest b/disass_ppc/disass/disass/Debug/disass.exe.intermediate.manifest
deleted file mode 100644
index c637eff..0000000
--- a/disass_ppc/disass/disass/Debug/disass.exe.intermediate.manifest
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/disass_ppc/disass/disass/Debug/disass.obj b/disass_ppc/disass/disass/Debug/disass.obj
deleted file mode 100644
index a0aac6a..0000000
Binary files a/disass_ppc/disass/disass/Debug/disass.obj and /dev/null differ
diff --git a/disass_ppc/disass/disass/Debug/disass.pch b/disass_ppc/disass/disass/Debug/disass.pch
deleted file mode 100644
index 5a59eb8..0000000
Binary files a/disass_ppc/disass/disass/Debug/disass.pch and /dev/null differ
diff --git a/disass_ppc/disass/disass/Debug/mt.dep b/disass_ppc/disass/disass/Debug/mt.dep
deleted file mode 100644
index 177f874..0000000
--- a/disass_ppc/disass/disass/Debug/mt.dep
+++ /dev/null
@@ -1 +0,0 @@
-Manifest resource last updated at 14:56:50.17 on 27/04/2009
diff --git a/disass_ppc/disass/disass/Debug/stdafx.obj b/disass_ppc/disass/disass/Debug/stdafx.obj
deleted file mode 100644
index 34270bc..0000000
Binary files a/disass_ppc/disass/disass/Debug/stdafx.obj and /dev/null differ
diff --git a/disass_ppc/disass/disass/Debug/vc80.idb b/disass_ppc/disass/disass/Debug/vc80.idb
deleted file mode 100644
index 52c1a0e..0000000
Binary files a/disass_ppc/disass/disass/Debug/vc80.idb and /dev/null differ
diff --git a/disass_ppc/disass/disass/Debug/vc80.pdb b/disass_ppc/disass/disass/Debug/vc80.pdb
deleted file mode 100644
index 87f1f84..0000000
Binary files a/disass_ppc/disass/disass/Debug/vc80.pdb and /dev/null differ
diff --git a/disass_ppc/disass/disass/ReadMe.txt b/disass_ppc/disass/disass/ReadMe.txt
deleted file mode 100644
index 888e62b..0000000
--- a/disass_ppc/disass/disass/ReadMe.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-========================================================================
- CONSOLE APPLICATION : disass Project Overview
-========================================================================
-
-AppWizard has created this disass application for you.
-
-This file contains a summary of what you will find in each of the files that
-make up your disass application.
-
-
-disass.vcproj
- This is the main project file for VC++ projects generated using an Application Wizard.
- It contains information about the version of Visual C++ that generated the file, and
- information about the platforms, configurations, and project features selected with the
- Application Wizard.
-
-disass.cpp
- This is the main application source file.
-
-/////////////////////////////////////////////////////////////////////////////
-Other standard files:
-
-StdAfx.h, StdAfx.cpp
- These files are used to build a precompiled header (PCH) file
- named disass.pch and a precompiled types file named StdAfx.obj.
-
-/////////////////////////////////////////////////////////////////////////////
-Other notes:
-
-AppWizard uses "TODO:" comments to indicate parts of the source code you
-should add to or customize.
-
-/////////////////////////////////////////////////////////////////////////////
diff --git a/disass_ppc/disass/disass/disass.cpp b/disass_ppc/disass/disass/disass.cpp
deleted file mode 100644
index 31769eb..0000000
--- a/disass_ppc/disass/disass/disass.cpp
+++ /dev/null
@@ -1,1136 +0,0 @@
-/*
- * mon_ppc.cpp - PowerPC disassembler
- *
- * cxmon (C) 1997-2004 Christian Bauer, Marc Hellwig
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "stdafx.h"
-#include "mon.h"
-
-
-// Instruction fields
-static int primop, exop, vxop, ra, rb, rc, rd;
-static unsigned short imm;
-
-
-// Codes for trap instructions
-static char *to_code[32] = {
- NULL, "lgt", "llt", NULL, "eq", "lge", "lle", NULL,
- "gt", NULL, NULL, NULL, "ge", NULL, NULL, NULL,
- "lt", NULL, NULL, NULL, "le", NULL, NULL, NULL,
- "ne", NULL, NULL, NULL, NULL, NULL, NULL, ""
-};
-
-
-// Macros for instruction forms
-#define iform(s, t) sprintf(f, "%s\t$%08x\n", s, t)
-
-#define bform(s, t) \
- if (rd == 0) \
- sprintf(f, "bdnzf%s\t%d,$%08x\n", s, ra, t); \
- else if (rd == 2) \
- sprintf(f, "bdzf%s\t%d,$%08x\n", s, ra, t); \
- else if (rd == 4) { \
- if (ra == 0) \
- sprintf(f, "bge%s\t$%08x\n", s, t); \
- else if (ra == 1) \
- sprintf(f, "ble%s\t$%08x\n", s, t); \
- else if (ra == 2) \
- sprintf(f, "bne%s\t$%08x\n", s, t); \
- else \
- sprintf(f, "bf%s\t%d,$%08x\n", s, ra, t); \
- } else if (rd == 8) \
- sprintf(f, "bdnzt%s\t%d,$%08x\n", s, ra, t); \
- else if (rd == 10) \
- sprintf(f, "bdzt%s\t%d,$%08x\n", s, ra, t); \
- else if (rd == 12) { \
- if (ra == 0) \
- sprintf(f, "blt%s\t$%08x\n", s, t); \
- else if (ra == 1) \
- sprintf(f, "bgt%s\t$%08x\n", s, t); \
- else if (ra == 2) \
- sprintf(f, "beq%s\t$%08x\n", s, t); \
- else \
- sprintf(f, "bt%s\t%d,$%08x\n", s, ra, t); \
- } else if (rd == 16) \
- sprintf(f, "bdnz%s\t$%08x\n", s, t); \
- else if (rd == 18) \
- sprintf(f, "bdz%s\t$%08x\n", s, t); \
- else \
- sprintf(f, "bc%s\t%d,%d,$%08x\n", s, rd, ra, t)
-
-#define scform(s) sprintf(f, s "\n")
-
-#define dform_ls(s) \
- if (ra == 0) \
- sprintf(f, "%s\tr%d,$%08x\n", s, rd, short(imm)); \
- else \
- sprintf(f, "%s\tr%d,$%04x(r%d)\n", s, rd, short(imm), ra)
-#define dform_fls(s) \
- if (ra == 0) \
- sprintf(f, "%s\tfr%d,$%08x\n", s, rd, short(imm)); \
- else \
- sprintf(f, "%s\tfr%d,$%04x(r%d)\n", s, rd, short(imm), ra)
-#define dform_simm(s) sprintf(f, "%s\tr%d,r%d,$%04x\n", s, rd, ra, short(imm))
-#define dform_simmn(s) sprintf(f, "%s\tr%d,r%d,$%04x\n", s, rd, ra, (-imm) & 0xffff)
-#define dform_uimm(s) sprintf(f, "%s\tr%d,r%d,$%04x\n", s, ra, rd, imm)
-#define dform_crs(s) sprintf(f, "%s\tcrf%d,r%d,$%04x\n", s, rd >> 2, ra, short(imm))
-#define dform_cru(s) sprintf(f, "%s\tcrf%d,r%d,$%04x\n", s, rd >> 2, ra, imm)
-#define dform_to(s) sprintf(f, "%s\t%d,r%d,$%04x\n", s, rd, ra, short(imm))
-
-#define dsform(s) sprintf(f, "%s\tr%d,$%04x(r%d)\n", s, rd, short(imm & 0xfffc), ra)
-
-#define xform_vls(s) \
- if (ra == 0) \
- sprintf(f, "%s\tv%d,r%d\n", s, rd, rb); \
- else \
- sprintf(f, "%s\tv%d,r%d,r%d\n", s, rd, ra, rb)
-#define xform_ls(s) \
- if (ra == 0) \
- sprintf(f, "%s\tr%d,r%d\n", s, rd, rb); \
- else \
- sprintf(f, "%s\tr%d,r%d,r%d\n", s, rd, ra, rb)
-#define xform_fls(s) \
- if (ra == 0) \
- sprintf(f, "%s\tfr%d,r%d\n", s, rd, rb); \
- else \
- sprintf(f, "%s\tfr%d,r%d,r%d\n", s, rd, ra, rb)
-#define xform_lsswi(s) \
- if (ra == 0) \
- sprintf(f, "%s\tr%d,%d\n", s, rd, rb ? rb : 32); \
- else \
- sprintf(f, "%s\tr%d,r%d,%d\n", s, rd, ra, rb ? rb : 32)
-#define xform_db(s) sprintf(f, "%s\tr%d,r%d\n", s, rd, rb)
-#define xform_d(s) sprintf(f, "%s\tr%d\n", s, rd)
-#define xform_fsr(s) sprintf(f, s "\tr%d,%d\n", rd, ra & 0xf)
-#define xform_sabc(s) sprintf(f, "%s%s\tr%d,r%d,r%d\n", s, w & 1 ? "." : "", ra, rd, rb)
-#define xform_sac(s) sprintf(f, "%s%s\tr%d,r%d\n", s, w & 1 ? "." : "", ra, rd)
-#define xform_tsr(s) sprintf(f, s "\t%d,r%d\n", ra & 0xf, rd)
-#define xform_sash(s) sprintf(f, s "%s\tr%d,r%d,%d\n", w & 1 ? "." : "", ra, rd, rb)
-#define xform_crlab(s) sprintf(f, "%s\tcrf%d,r%d,r%d\n", s, rd >> 2, ra, rb)
-#define xform_fcrab(s) sprintf(f, "%s\tcrf%d,fr%d,fr%d\n", s, rd >> 2, ra, rb)
-#define xform_crcr(s) sprintf(f, "%s\tcrf%d,crf%d\n", s, rd >> 2, ra >> 2)
-#define xform_cr(s) sprintf(f, "%s\tcrf%d\n", s, rd >> 2)
-#define xform_cri(s) sprintf(f, s "%s\tcrf%d,%d\n", w & 1 ? "." : "", rd >> 2, rb >> 1)
-#define xform_to(s) sprintf(f, "%s\t%d,r%d,r%d\n", s, rd, ra, rb)
-#define xform_fdb(s) sprintf(f, "%s%s\tfr%d,fr%d\n", s, w & 1 ? "." : "", rd, rb)
-#define xform_fd(s) sprintf(f, "%s%s\tfr%d\n", s, w & 1 ? "." : "", rd)
-#define xform_crb(s) sprintf(f, "%s%s\tcrb%d\n", s, w & 1 ? "." : "", rd)
-#define xform_ab(s) sprintf(f, "%s\tr%d,r%d\n", s, ra, rb)
-#define xform_b(s) sprintf(f, "%s\tr%d\n", s, rb)
-#define xform(s) sprintf(f, s "\n")
-
-#define xlform_b(s) sprintf(f, "%s\t%d,%d\n", s, rd, ra)
-#define xlform_cr(s) sprintf(f, "%s\tcrb%d,crb%d,crb%d\n", s, rd, ra, rb)
-#define xlform_crcr(s) sprintf(f, "%s\tcrf%d,crf%d\n", s, rd >> 2, ra >> 2)
-#define xlform(s) sprintf(f, s "\n")
-
-#define xfxform_fspr(s) sprintf(f, "%s\tr%d,SPR%d\n", s, rd, ra | (rb << 5))
-#define xfxform_crm(s) sprintf(f, s "\t$%02x,r%d\n", w >> 12 & 0xff, rd)
-#define xfxform_tspr(s) sprintf(f, "%s\tSPR%d,r%d\n", s, ra | (rb << 5), rd)
-#define xfxform_tb(s) sprintf(f, "%s\tr%d\n", s, rd)
-
-#define xflform(s) sprintf(f, s "%s\t$%02x,fr%d\n", w & 1 ? "." : "", w >> 17 & 0xff, rb)
-
-#define xsform(s) sprintf(f, s "%s\tr%d,r%d,%d\n", w & 1 ? "." : "", ra, rd, rb | (w & 2 ? 32 : 0))
-
-#define xoform_dab(s) sprintf(f, "%s%s\tr%d,r%d,r%d\n", s, w & 1 ? "." : "", rd, ra, rb)
-#define xoform_da(s) sprintf(f, "%s%s\tr%d,r%d\n", s, w & 1 ? "." : "", rd, ra)
-
-#define aform_dab(s) sprintf(f, "%s%s\tfr%d,fr%d,fr%d\n", s, w & 1 ? "." : "", rd, ra, rb)
-#define aform_db(s) sprintf(f, "%s%s\tfr%d,fr%d\n", s, w & 1 ? "." : "", rd, rb)
-#define aform_dac(s) sprintf(f, "%s%s\tfr%d,fr%d,fr%d\n", s, w & 1 ? "." : "", rd, ra, rc)
-#define aform_dacb(s) sprintf(f, "%s%s\tfr%d,fr%d,fr%d,fr%d\n", s, w & 1 ? "." : "", rd, ra, rc, rb)
-
-#define mform(s) sprintf(f, "%s%s\tr%d,r%d,r%d,$%08x\n", s, w & 1 ? "." : "", ra, rd, rb, mbme2mask(w >> 6 & 31, w >>1 & 31))
-#define mform_i(s) sprintf(f, "%s%s\tr%d,r%d,%d,$%08x\n", s, w & 1 ? "." : "", ra, rd, rb, mbme2mask(w >> 6 & 31, w >>1 & 31))
-
-#define mdform(s) sprintf(f, "%s%s\tr%d,r%d,%d,%d\n", s, w & 1 ? "." : "", ra, rd, rb | (w & 2 ? 32 : 0), rc | (w & 32 ? 32 : 0))
-
-#define mdsform(s) sprintf(f, "%s%s\tr%d,r%d,r%d,%d\n", s, w & 1 ? "." : "", ra, rd, rb, rc | (w & 32 ? 32 : 0))
-
-#define va_form(s) sprintf(f, "%s\tv%d,v%d,v%d,v%d\n", s, rd, ra, rb, rc)
-#define vx_form(s) sprintf(f, "%s\tv%d,v%d,v%d\n", s, rd, ra, rb)
-#define vxr_form(s) sprintf(f, "%s%s\tv%d,v%d,v%d\n", s, w & (1 << 10) ? "." : "", rd, ra, rb)
-#define vxi_ra_form(s) sprintf(f, "%s\tv%d,v%d,%d\n", s, rd, rb, ra)
-#define vx_raz_form(s) \
- if (ra == 0) \
- sprintf(f, "%s\tv%d,v%d\n", s, rd, rb); \
- else \
- sprintf(f, "?\n")
-#define vxi_ras_rbz_form(s) \
- if (rb == 0) \
- sprintf(f, "%s\tv%d,%d\n", s, rd, ra - (ra & 0x10 ? 0x20 : 0)); \
- else \
- sprintf(f, "?\n")
-
-// Prototypes
-static void disass4(char* f, unsigned int adr, unsigned int w);
-static void disass19(char* f, unsigned int adr, unsigned int w);
-static void disass31(char* f, unsigned int adr, unsigned int w);
-static void disass59(char* f, unsigned int adr, unsigned int w);
-static void disass63(char* f, unsigned int adr, unsigned int w);
-
-extern "C" __declspec(dllexport) void disass_ppc(char* f, unsigned int adr, unsigned int w);
-
-static unsigned int mbme2mask(int mb, int me);
-static char *get_spr(int reg);
-
-
-
-
-
-
-
-/*
- * Disassemble one instruction
- */
-
-extern "C" __declspec(dllexport) void disass_ppc(char* f, unsigned int adr, unsigned int w)
-{
- // Divide instruction into fields
- primop = w >> 26;
- rd = w >> 21 & 0x1f;
- ra = w >> 16 & 0x1f;
- rb = w >> 11 & 0x1f;
- rc = w >> 6 & 0x1f;
- exop = w >> 1 & 0x3ff;
- vxop = w & 0x7ff;
- imm = w & 0xffff;
-
- // Decode primary opcode
- switch (primop) {
- case 2: // 64 bit
- if (to_code[rd] != NULL)
- sprintf(f, "td%si\tr%d,$%04x\n", to_code[rd], ra, short(imm));
- else
- dform_to("tdi");
- break;
-
- case 3:
- if (to_code[rd] != NULL)
- sprintf(f, "tw%si\tr%d,$%04x\n", to_code[rd], ra, short(imm));
- else
- dform_to("twi");
- break;
-
- case 4: // AltiVec
- disass4(f, adr, w);
- break;
-
- case 7: dform_simm("mulli"); break;
- case 8: dform_simm("subfic"); break;
-
- case 10:
- if (rd & 1)
- dform_cru("cmpldi"); // 64 bit
- else
- dform_cru("cmplwi");
- break;
-
- case 11:
- if (rd & 1)
- dform_crs("cmpdi"); // 64 bit
- else
- dform_crs("cmpwi");
- break;
-
- case 12:
- if (imm < 0x8000)
- dform_simm("addic");
- else
- dform_simmn("subic");
- break;
-
- case 13:
- if (imm < 0x8000)
- dform_simm("addic.");
- else
- dform_simmn("subic.");
- break;
-
- case 14:
- if (ra == 0)
- sprintf(f, "li\tr%d,$%04x\n", rd, short(imm));
- else
- if (imm < 0x8000)
- dform_simm("addi");
- else
- dform_simmn("subi");
- break;
-
- case 15:
- if (ra == 0)
- sprintf(f, "lis\tr%d,$%04x\n", rd, imm);
- else
- if (imm < 0x8000)
- dform_simm("addis");
- else
- dform_simmn("subis");
- break;
-
- case 16: {
- int target = short(imm & 0xfffc);
- char *form;
- if (w & 1)
- if (w & 2)
- form = "la";
- else {
- form = "l";
- target += adr;
- }
- else
- if (w & 2)
- form = "a";
- else {
- form = "";
- target += adr;
- }
- bform(form, target);
- break;
- }
-
- case 17:
- if (w & 2)
- scform("sc");
- else
- sprintf(f, "?\n");
- break;
-
- case 18: {
- int target = w & 0x03fffffc;
- if (target & 0x02000000)
- target |= 0xfc000000;
- if (w & 1)
- if (w & 2)
- iform("bla", target);
- else
- iform("bl", adr + target);
- else
- if (w & 2)
- iform("ba", target);
- else
- iform("b", adr + target);
- break;
- }
-
- case 19: disass19(f, adr, w); break;
- case 20: mform_i("rlwimi"); break;
- case 21: mform_i("rlwinm"); break;
- case 23: mform("rlwnm"); break;
-
- case 24:
- if (rd == 0 && ra == 0 && imm == 0)
- sprintf(f, "nop\n");
- else
- dform_uimm("ori");
- break;
-
- case 25: dform_uimm("oris"); break;
- case 26: dform_uimm("xori"); break;
- case 27: dform_uimm("xoris"); break;
- case 28: dform_uimm("andi."); break;
- case 29: dform_uimm("andis."); break;
-
- case 30: // 64 bit
- switch (w >> 1 & 0xf) {
- case 0: case 1: mdform("rldicl"); break;
- case 2: case 3: mdform("rldicr"); break;
- case 4: case 5: mdform("rldic"); break;
- case 6: case 7: mdform("rldimi"); break;
- case 8: mdsform("rldcl"); break;
- case 9: mdsform("rldcr"); break;
- default:
- sprintf(f, "?\n");
- break;
- };
- break;
-
- case 31: disass31(f, adr, w); break;
- case 32: dform_ls("lwz"); break;
- case 33: dform_ls("lwzu"); break;
- case 34: dform_ls("lbz"); break;
- case 35: dform_ls("lbzu"); break;
- case 36: dform_ls("stw"); break;
- case 37: dform_ls("stwu"); break;
- case 38: dform_ls("stb"); break;
- case 39: dform_ls("stbu"); break;
- case 40: dform_ls("lhz"); break;
- case 41: dform_ls("lhzu"); break;
- case 42: dform_ls("lha"); break;
- case 43: dform_ls("lhau"); break;
- case 44: dform_ls("sth"); break;
- case 45: dform_ls("sthu"); break;
- case 46: dform_ls("lmw"); break;
- case 47: dform_ls("stmw"); break;
- case 48: dform_fls("lfs"); break;
- case 49: dform_fls("lfsu"); break;
- case 50: dform_fls("lfd"); break;
- case 51: dform_fls("lfdu"); break;
- case 52: dform_fls("stfs"); break;
- case 53: dform_fls("stfsu"); break;
- case 54: dform_fls("stfd"); break;
- case 55: dform_fls("stfdu"); break;
-
- case 58: // 64 bit
- switch (w & 3) {
- case 0: dsform("ld"); break;
- case 1: dsform("ldu"); break;
- case 2: dsform("lwa"); break;
- default:
- sprintf(f, "?\n");
- break;
- }
- break;
-
- case 59: disass59(f, adr, w); break;
-
- case 62: // 64 bit
- switch (w & 3) {
- case 0: dsform("std"); break;
- case 1: dsform("stdu"); break;
- default:
- sprintf(f, "?\n");
- break;
- }
- break;
-
- case 63: disass63(f, adr, w); break;
-
- default:
- if (!w)
- sprintf(f, "illegal\n");
- else
- sprintf(f, "?\n");
- break;
- }
-}
-
-
-/*
- * Disassemble instruction with primary opcode = 4 (VX-Form)
- */
-
-static void disass4(char* f, unsigned int adr, unsigned int w)
-{
- switch (vxop) {
- case 1540:
- if (ra == 0 && rb == 0)
- sprintf(f, "mfvscr\tv%d\n", rd);
- else
- sprintf(f, "?\n");
- break;
- case 1604:
- if (rd == 0 && ra == 0)
- sprintf(f, "mtvscr\tv%d\n", rb);
- else
- sprintf(f, "?\n");
- break;
- case 384: vx_form("vaddcuw"); break;
- case 10: vx_form("vaddfp"); break;
- case 768: vx_form("vaddsbs"); break;
- case 832: vx_form("vaddshs"); break;
- case 896: vx_form("vaddsws"); break;
- case 0: vx_form("vaddubm"); break;
- case 512: vx_form("vaddubs"); break;
- case 64: vx_form("vadduhm"); break;
- case 576: vx_form("vadduhs"); break;
- case 128: vx_form("vadduwm"); break;
- case 640: vx_form("vadduws"); break;
- case 1028: vx_form("vand"); break;
- case 1092: vx_form("vandc"); break;
- case 1282: vx_form("vavgsb"); break;
- case 1346: vx_form("vavgsh"); break;
- case 1410: vx_form("vavgsw"); break;
- case 1026: vx_form("vavgub"); break;
- case 1090: vx_form("vavguh"); break;
- case 1154: vx_form("vavguw"); break;
- case 842: vxi_ra_form("vcfsx"); break;
- case 778: vxi_ra_form("vcfux"); break;
- case 966: case 966+1024: vxr_form("vcmpbfp"); break;
- case 198: case 198+1024: vxr_form("vcmpeqfp"); break;
- case 6: case 6+1024: vxr_form("vcmpequb"); break;
- case 70: case 70+1024: vxr_form("vcmpequh"); break;
- case 134: case 134+1024: vxr_form("vcmpequw"); break;
- case 454: case 454+1024: vxr_form("vcmpgefp"); break;
- case 710: case 710+1024: vxr_form("vcmpgtfp"); break;
- case 774: case 774+1024: vxr_form("vcmpgtsb"); break;
- case 838: case 838+1024: vxr_form("vcmpgtsh"); break;
- case 902: case 902+1024: vxr_form("vcmpgtsw"); break;
- case 518: case 518+1024: vxr_form("vcmpgtub"); break;
- case 582: case 582+1024: vxr_form("vcmpgtuh"); break;
- case 646: case 646+1024: vxr_form("vcmpgtuw"); break;
- case 970: vxi_ra_form("vctsxs"); break;
- case 906: vxi_ra_form("vctuxs"); break;
- case 394: vx_raz_form("vexptefp"); break;
- case 458: vx_raz_form("vlogefp"); break;
- case 1034: vx_form("vmaxfp"); break;
- case 258: vx_form("vmaxsb"); break;
- case 322: vx_form("vmaxsh"); break;
- case 386: vx_form("vmaxsw"); break;
- case 2: vx_form("vmaxub"); break;
- case 66: vx_form("vmaxuh"); break;
- case 130: vx_form("vmaxuw"); break;
- case 1098: vx_form("vminfp"); break;
- case 770: vx_form("vminsb"); break;
- case 834: vx_form("vminsh"); break;
- case 898: vx_form("vminsw"); break;
- case 514: vx_form("vminub"); break;
- case 578: vx_form("vminuh"); break;
- case 642: vx_form("vminuw"); break;
- case 12: vx_form("vmrghb"); break;
- case 76: vx_form("vmrghh"); break;
- case 140: vx_form("vmrghw"); break;
- case 268: vx_form("vmrglb"); break;
- case 332: vx_form("vmrglh"); break;
- case 396: vx_form("vmrglw"); break;
- case 776: vx_form("vmulesb"); break;
- case 840: vx_form("vmulesh"); break;
- case 520: vx_form("vmuleub"); break;
- case 584: vx_form("vmuleuh"); break;
- case 264: vx_form("vmulosb"); break;
- case 328: vx_form("vmulosh"); break;
- case 8: vx_form("vmuloub"); break;
- case 72: vx_form("vmulouh"); break;
- case 1284: vx_form("vnor"); break;
- case 1156: vx_form("vor"); break;
- case 782: vx_form("vpkpx"); break;
- case 398: vx_form("vpkshss"); break;
- case 270: vx_form("vpkshus"); break;
- case 462: vx_form("vpkswss"); break;
- case 334: vx_form("vpkswus"); break;
- case 14: vx_form("vpkuhum"); break;
- case 142: vx_form("vpkuhus"); break;
- case 78: vx_form("vpkuwum"); break;
- case 206: vx_form("vpkuwus"); break;
- case 266: vx_raz_form("vrefp"); break;
- case 714: vx_raz_form("vrfim"); break;
- case 522: vx_raz_form("vrfin"); break;
- case 650: vx_raz_form("vrfip"); break;
- case 586: vx_raz_form("vrfiz"); break;
- case 4: vx_form("vrlb"); break;
- case 68: vx_form("vrlh"); break;
- case 132: vx_form("vrlw"); break;
- case 330: vx_raz_form("vrsqrtefp"); break;
- case 452: vx_form("vsl"); break;
- case 260: vx_form("vslb"); break;
- case 324: vx_form("vslh"); break;
- case 1036: vx_form("vslo"); break;
- case 388: vx_form("vslw"); break;
- case 524: vxi_ra_form("vspltb"); break;
- case 588: vxi_ra_form("vsplth"); break;
- case 780: vxi_ras_rbz_form("vspltisb"); break;
- case 844: vxi_ras_rbz_form("vspltish"); break;
- case 908: vxi_ras_rbz_form("vspltisw"); break;
- case 652: vxi_ra_form("vspltw"); break;
- case 708: vx_form("vsr"); break;
- case 772: vx_form("vsrab"); break;
- case 836: vx_form("vsrah"); break;
- case 900: vx_form("vsraw"); break;
- case 516: vx_form("vsrb"); break;
- case 580: vx_form("vsrh"); break;
- case 1100: vx_form("vsro"); break;
- case 644: vx_form("vsrw"); break;
- case 1408: vx_form("vsubcuw"); break;
- case 74: vx_form("vsubfp"); break;
- case 1792: vx_form("vsubsbs"); break;
- case 1856: vx_form("vsubshs"); break;
- case 1920: vx_form("vsubsws"); break;
- case 1024: vx_form("vsububm"); break;
- case 1536: vx_form("vsububs"); break;
- case 1088: vx_form("vsubuhm"); break;
- case 1600: vx_form("vsubuhs"); break;
- case 1152: vx_form("vsubuwm"); break;
- case 1664: vx_form("vsubuws"); break;
- case 1928: vx_form("vsumsws"); break;
- case 1672: vx_form("vsum2sws"); break;
- case 1800: vx_form("vsum4sbs"); break;
- case 1608: vx_form("vsum4shs"); break;
- case 1544: vx_form("vsum4ubs"); break;
- case 846: vx_raz_form("vupkhpx"); break;
- case 526: vx_raz_form("vupkhsb"); break;
- case 590: vx_raz_form("vupkhsh"); break;
- case 974: vx_raz_form("vupklpx"); break;
- case 654: vx_raz_form("vupklsb"); break;
- case 718: vx_raz_form("vupklsh"); break;
- case 1220: vx_form("vxor"); break;
- default:
- if ((vxop & 0x43f) == 44) { // vsldoi vD,vA,vB,SHB
- sprintf(f, "vsldoi\tv%d,v%d,v%d,%d\n", rd, ra, rb, rc & 15);
- break;
- }
- switch (vxop & 0x3f) { // VA-form, must come last
- case 46: va_form("vmaddfp"); break;
- case 32: va_form("vmhaddshs"); break;
- case 33: va_form("vmhraddshs"); break;
- case 34: va_form("vmladduhm"); break;
- case 37: va_form("vmsummbm"); break;
- case 40: va_form("vmsumshm"); break;
- case 41: va_form("vmsumshs"); break;
- case 36: va_form("vmsumubm"); break;
- case 38: va_form("vmsumuhm"); break;
- case 39: va_form("vmsumuhs"); break;
- case 47: va_form("vnmsubfp"); break;
- case 43: va_form("vperm"); break;
- case 42: va_form("vsel"); break;
- default: sprintf(f, "?\n"); break;
- }
- break;
- }
-}
-
-
-/*
- * Disassemble instruction with primary opcode = 19 (XL-Form)
- */
-
-static void disass19(char* f, unsigned int adr, unsigned int w)
-{
- switch (exop) {
- case 0: xlform_crcr("mcrf"); break;
-
- case 16:
- if (w & 1)
- if (rd == 20)
- sprintf(f, "blrl\n");
- else
- xlform_b("bclrl");
- else
- if (rd == 20)
- sprintf(f, "blr\n");
- else
- xlform_b("bclr");
- break;
-
- case 33:
- if (ra == rb)
- sprintf(f, "crnot\tcrb%d,crb%d\n", rd, ra);
- else
- xlform_cr("crnor");
- break;
-
- case 50: xlform("rfi"); break;
- case 129: xlform_cr("crandc"); break;
- case 150: xlform("isync"); break;
-
- case 193:
- if (ra == rd && rb == rd)
- sprintf(f, "crclr\tcrb%d\n", rd);
- else
- xlform_cr("crxor");
- break;
-
- case 225: xlform_cr("crnand"); break;
- case 257: xlform_cr("crand"); break;
-
- case 289:
- if (ra == rd && rb == rd)
- sprintf(f, "crset\tcrb%d\n", rd);
- else
- xlform_cr("creqv");
- break;
-
- case 417: xlform_cr("crorc"); break;
-
- case 449:
- if (ra == rb)
- sprintf(f, "crmove\tcrb%d,crb%d\n", rd, ra);
- else
- xlform_cr("cror");
- break;
-
- case 528:
- if (w & 1)
- if (rd == 20)
- sprintf(f, "bctrl\n");
- else
- xlform_b("bcctrl");
- else
- if (rd == 20)
- sprintf(f, "bctr\n");
- else
- xlform_b("bcctr");
- break;
-
- default:
- sprintf(f, "?\n");
- break;
- }
-}
-
-
-/*
- * Disassemble instruction with primary opcode = 31 (X-Form/XO-Form/XFX-Form/XS-Form)
- */
-
-static void disass31(char* f, unsigned int adr, unsigned int w)
-{
- switch (exop) {
- case 0:
- if (rd & 1)
- xform_crlab("cmpd"); // 64 bit
- else
- xform_crlab("cmpw");
- break;
-
- case 4:
- if (rd == 31 && ra == 0 && rb == 0)
- xform("trap");
- else if (to_code[rd] != NULL)
- sprintf(f, "tw%s\tr%d,r%d\n", to_code[rd], ra, rb);
- else
- xform_to("tw");
- break;
-
- case 6: xform_vls("lvsl"); break;
- case 7: xform_vls("lvebx"); break;
- case 8: xoform_dab("subfc"); break;
- case 8+512: xoform_dab("subfco"); break;
- case 9: case 9+512: xoform_dab("mulhdu"); break; // 64 bit
- case 10: xoform_dab("addc"); break;
- case 10+512: xoform_dab("addco"); break;
- case 11: case 11+512: xoform_dab("mulhwu"); break;
- case 19: xform_d("mfcr"); break;
- case 20: xform_ls("lwarx"); break;
- case 21: xform_ls("ldx"); break; // 64 bit
- case 23: xform_ls("lwzx"); break;
- case 24: xform_sabc("slw"); break;
- case 26: xform_sac("cntlzw"); break;
- case 27: xform_sabc("sld"); break; // 64 bit
- case 28: xform_sabc("and"); break;
-
- case 32:
- if (rd & 1)
- xform_crlab("cmpld"); // 64 bit
- else
- xform_crlab("cmplw");
- break;
-
- case 38: xform_vls("lvsr"); break;
- case 39: xform_vls("lvehx"); break;
- case 40: xoform_dab("subf"); break;
- case 40+512: xoform_dab("subfo"); break;
- case 53: xform_ls("ldux"); break; // 64 bit
- case 54: xform_ab("dcbst"); break;
- case 55: xform_ls("lwzux"); break;
- case 58: xform_sac("cntlzd"); break; // 64 bit
- case 60: xform_sabc("andc"); break;
-
- case 68: // 64 bit
- if (to_code[rd] != NULL)
- sprintf(f, "td%s\tr%d,r%d\n", to_code[rd], ra, rb);
- else
- xform_to("td");
- break;
-
- case 71: xform_vls("lvewx"); break;
- case 73: case 73+512: xoform_dab("mulhd"); break; // 64 bit
- case 75: case 75+512: xoform_dab("mulhw"); break;
- case 83: xform_d("mfmsr"); break;
- case 84: xform_ls("ldarx"); break; // 64 bit
- case 86: xform_ab("dcbf"); break;
- case 87: xform_ls("lbzx"); break;
- case 103: xform_vls("lvx"); break;
- case 104: xoform_da("neg"); break;
- case 104+512: xoform_da("nego"); break;
- case 119: xform_ls("lbzux"); break;
-
- case 124:
- if (rd == rb)
- sprintf(f, "not%s\tr%d,r%d\n", w & 1 ? "." : "", ra, rd);
- else
- xform_sabc("nor");
- break;
-
- case 135: xform_vls("stvebx"); break;
- case 136: xoform_dab("subfe"); break;
- case 136+512: xoform_dab("subfeo"); break;
- case 138: xoform_dab("adde"); break;
- case 138+512: xoform_dab("addeo"); break;
- case 144: xfxform_crm("mtcrf"); break;
- case 146: xform_d("mtmsr"); break;
- case 149: xform_ls("stdx"); break; // 64 bit
-
- case 150:
- if (w & 1)
- xform_ls("stwcx.");
- else
- sprintf(f, "?\n");
- break;
-
- case 151: xform_ls("stwx"); break;
- case 167: xform_vls("stvehx"); break;
- case 181: xform_ls("stdux"); break; // 64 bit
- case 183: xform_ls("stwux"); break;
- case 199: xform_vls("stvewx"); break;
- case 200: xoform_da("subfze"); break;
- case 200+512: xoform_da("subfzeo"); break;
- case 202: xoform_da("addze"); break;
- case 202+512: xoform_da("addzeo"); break;
- case 210: xform_tsr("mtsr"); break;
-
- case 214: // 64 bit
- if (w & 1)
- xform_ls("stdcx");
- else
- sprintf(f, "?\n");
- break;
-
- case 215: xform_ls("stbx"); break;
- case 231: xform_vls("stvx"); break;
- case 232: xoform_da("subfme"); break;
- case 232+512: xoform_da("subfmeo"); break;
- case 233: xoform_dab("mulld"); break; // 64 bit
- case 233+512: xoform_dab("mulldo"); break; // 64 bit
- case 234: xoform_da("addme"); break;
- case 234+512: xoform_da("addmeo"); break;
- case 235: xoform_dab("mullw"); break;
- case 235+512: xoform_dab("mullwo"); break;
- case 242: xform_db("mtsrin"); break;
- case 246: xform_ab("dcbtst"); break;
- case 247: xform_ls("stbux"); break;
- case 266: xoform_dab("add"); break;
- case 266+512: xoform_dab("addo"); break;
- case 278: xform_ab("dcbt"); break;
- case 279: xform_ls("lhzx"); break;
- case 284: xform_sabc("eqv"); break;
- case 306: xform_b("tlbie"); break;
- case 310: xform_ls("eciwx"); break;
- case 311: xform_ls("lhzux"); break;
- case 316: xform_sabc("xor"); break;
-
- case 339:
- if ((ra | (rb << 5)) == 1)
- sprintf(f, "mfxer\tr%d\n", rd);
- else if ((ra | (rb << 5)) == 8)
- sprintf(f, "mflr\tr%d\n", rd);
- else if ((ra | (rb << 5)) == 9)
- sprintf(f, "mfctr\tr%d\n", rd);
- else if ((ra | (rb << 5)) == 256)
- sprintf(f, "mfvrsave\tr%d\n", rd);
- else {
- char *spr = get_spr(ra | (rb << 5));
- if (spr)
- sprintf(f, "mfspr\tr%d,%s\n", rd, spr);
- else
- xfxform_fspr("mfspr");
- }
- break;
-
- case 341: xform_ls("lwax"); break; // 64 bit
- case 343: xform_ls("lhax"); break;
- case 359: xform_vls("lvxl"); break;
- case 370: xform("tlbia"); break;
-
- case 822: // AltiVec
- if ((rd & 0xc) == 0 && ra == 0 && rb == 0 && (w & 1) == 0) {
- if (rd & 0x10)
- sprintf(f, "dssall\n");
- else
- sprintf(f, "dss\t%d\n", rd & 3);
- }
- else
- sprintf(f, "?\n");
- break;
-
- case 342: // AltiVec
- if ((rd & 0xc) == 0 && (w & 1) == 0)
- sprintf(f, "dst%s\tr%d,r%d,%d\n", rd & 0x10 ? "t" : "", ra, rb, rd & 3);
- else
- sprintf(f, "?\n");
- break;
-
- case 374: // AltiVec
- if ((rd & 0xc) == 0 && (w & 1) == 0)
- sprintf(f, "dstst%s\tr%d,r%d,%d\n", rd & 0x10 ? "t" : "", ra, rb, rd & 3);
- else
- sprintf(f, "?\n");
- break;
-
- case 371:
- if ((ra | (rb << 5)) == 268)
- xfxform_tb("mftb");
- else if ((ra | (rb << 5)) == 269)
- xfxform_tb("mftbu");
- else
- sprintf(f, "?\n");
- break;
-
- case 373: xform_ls("lwaux"); break; // 64 bit
- case 375: xform_ls("lhaux"); break;
- case 407: xform_ls("sthx"); break;
- case 412: xform_sabc("orc"); break;
- case 434: xform_b("slbie"); break; // 64 bit
- case 438: xform_ls("ecowx"); break;
- case 439: xform_ls("sthux"); break;
-
- case 444:
- if (rd == rb)
- sprintf(f, "mr%s\tr%d,r%d\n", w & 1 ? "." : "", ra, rd);
- else
- xform_sabc("or");
- break;
-
- case 457: xoform_dab("divdu"); break; // 64 bit
- case 457+512: xoform_dab("divduo"); break; // 64 bit
- case 459: xoform_dab("divwu"); break;
- case 459+512: xoform_dab("divwuo"); break;
-
- case 467:
- if ((ra | (rb << 5)) == 1)
- sprintf(f, "mtxer\tr%d\n", rd);
- else if ((ra | (rb << 5)) == 8)
- sprintf(f, "mtlr\tr%d\n", rd);
- else if ((ra | (rb << 5)) == 9)
- sprintf(f, "mtctr\tr%d\n", rd);
- else if ((ra | (rb << 5)) == 256)
- sprintf(f, "mtvrsave\tr%d\n", rd);
- else {
- char *spr = get_spr(ra | (rb << 5));
- if (spr)
- sprintf(f, "mtspr\t%s,r%d\n", spr, rd);
- else
- xfxform_tspr("mtspr");
- }
- break;
-
- case 470: xform_ab("dcbi"); break;
- case 476: xform_sabc("nand"); break;
- case 487: xform_vls("stvxl"); break;
- case 489: xoform_dab("divd"); break; // 64 bit
- case 489+512: xoform_dab("divdo"); break; // 64 bit
- case 491: xoform_dab("divw"); break;
- case 491+512: xoform_dab("divwo"); break;
- case 498: xform("slbia"); break; // 64 bit
- case 512: xform_cr("mcrxr"); break;
- case 533: xform_ls("lswx"); break;
- case 534: xform_ls("lwbrx"); break;
- case 535: xform_fls("lfsx"); break;
- case 536: xform_sabc("srw"); break;
- case 539: xform_sabc("srd"); break; // 64 bit
- case 566: xform("tlbsync"); break;
- case 567: xform_fls("lfsux"); break;
- case 595: xform_fsr("mfsr"); break;
- case 597: xform_lsswi("lswi"); break;
- case 598: xform("sync"); break;
- case 599: xform_fls("lfdx"); break;
- case 631: xform_fls("lfdux"); break;
- case 659: xform_db("mfsrin"); break;
- case 661: xform_ls("stswx"); break;
- case 662: xform_ls("stwbrx"); break;
- case 663: xform_fls("stfsx"); break;
- case 695: xform_fls("stfsux"); break;
- case 725: xform_lsswi("stswi"); break;
- case 727: xform_fls("stfdx"); break;
- case 758: xform_ab("dcba"); break;
- case 759: xform_fls("stfdux"); break;
- case 790: xform_ls("lhbrx"); break;
- case 792: xform_sabc("sraw"); break;
- case 794: xform_sabc("srad"); break; // 64 bit
- case 824: xform_sash("srawi"); break;
- case 826: case 827: xsform("sradi"); break; // 64 bit
- case 854: xform("eieio"); break;
- case 918: xform_ls("sthbrx"); break;
- case 922: xform_sac("extsh"); break;
- case 954: xform_sac("extsb"); break;
- case 978: sprintf(f, "tlbld\tr%d\n", rb); break; // 603
- case 982: xform_ab("icbi"); break;
- case 983: xform_fls("stfiwx"); break;
- case 986: xform_sac("extsw"); break; // 64 bit
- case 1010: sprintf(f, "tlbli\tr%d\n", rb); break; // 603
- case 1014: xform_ab("dcbz"); break;
-
- default:
- sprintf(f, "?\n");
- break;
- }
-}
-
-
-/*
- * Disassemble instruction with primary opcode = 59 (A-Form)
- */
-
-static void disass59(char* f, unsigned int adr, unsigned int w)
-{
- switch (exop & 0x1f) {
- case 18: aform_dab("fdivs"); break;
- case 20: aform_dab("fsubs"); break;
- case 21: aform_dab("fadds"); break;
- case 22: aform_db("fsqrts"); break;
- case 24: aform_db("fres"); break;
- case 25: aform_dac("fmuls"); break;
- case 28: aform_dacb("fmsubs"); break;
- case 29: aform_dacb("fmadds"); break;
- case 30: aform_dacb("fnmsubs"); break;
- case 31: aform_dacb("fnmadds"); break;
-
- default:
- sprintf(f, "?\n");
- break;
- }
-}
-
-
-/*
- * Disassemble instruction with primary opcode = 63 (A-Form/X-Form/XFL-Form)
- */
-
-static void disass63(char* f, unsigned int adr, unsigned int w)
-{
- if (exop & 0x10)
- switch (exop & 0x1f) {
- case 18: aform_dab("fdiv"); break;
- case 20: aform_dab("fsub"); break;
- case 21: aform_dab("fadd"); break;
- case 22: aform_db("fsqrt"); break;
- case 23: aform_dacb("fsel"); break;
- case 25: aform_dac("fmul"); break;
- case 26: aform_db("frsqrte"); break;
- case 28: aform_dacb("fmsub"); break;
- case 29: aform_dacb("fmadd"); break;
- case 30: aform_dacb("fnmsub"); break;
- case 31: aform_dacb("fnmadd"); break;
-
- default:
- sprintf(f, "?\n");
- break;
- }
- else
- switch (exop) {
- case 0: xform_fcrab("fcmpu"); break;
- case 12: xform_fdb("frsp"); break;
- case 14: xform_fdb("fctiw"); break;
- case 15: xform_fdb("fctiwz"); break;
- case 32: xform_fcrab("fcmpo"); break;
- case 38: xform_crb("mtfsb1"); break;
- case 40: xform_fdb("fneg"); break;
- case 64: xform_crcr("mcrfs"); break;
- case 70: xform_crb("mtfsb0"); break;
- case 72: xform_fdb("fmr"); break;
- case 134: xform_cri("mtfsfi"); break;
- case 136: xform_fdb("fnabs"); break;
- case 264: xform_fdb("fabs"); break;
- case 583: xform_fd("mffs"); break;
- case 711: xflform("mtfsf"); break;
- case 814: xform_fdb("fctid"); break; // 64 bit
- case 815: xform_fdb("fctidz"); break; // 64 bit
- case 846: xform_fdb("fcfid"); break; // 64 bit
-
- default:
- sprintf(f, "?\n");
- break;
- }
-}
-
-
-/*
- * Convert mask begin/end to mask
- */
-
-static unsigned int mbme2mask(int mb, int me)
-{
- unsigned int m = 0;
- int i;
-
- if (mb <= me)
- for (i=mb; i<=me; i++)
- m |= 1 << (31-i);
- else {
- for (i=0; i<=me; i++)
- m |= 1 << (31-i);
- for (i=mb; i<=31; i++)
- m |= 1 << (31-i);
- }
- return m;
-}
-
-
-/*
- * Convert SPR number to register name
- */
-
-char *get_spr(int reg)
-{
- switch (reg) {
- case 1: return "xer";
- case 8: return "lr";
- case 9: return "ctr";
- case 18: return "dsisr";
- case 19: return "dar";
- case 22: return "dec";
- case 25: return "sdr1";
- case 26: return "srr0";
- case 27: return "srr1";
- case 272: return "sprg0";
- case 273: return "sprg1";
- case 274: return "sprg2";
- case 275: return "sprg3";
- case 280: return "asr"; // 64 bit
- case 282: return "ear";
- case 284: return "tbl";
- case 285: return "tbu";
- case 287: return "pvr";
- case 528: return "ibat0u";
- case 529: return "ibat0l";
- case 530: return "ibat1u";
- case 531: return "ibat1l";
- case 532: return "ibat2u";
- case 533: return "ibat2l";
- case 534: return "ibat3u";
- case 535: return "ibat3l";
- case 536: return "dbat0u";
- case 537: return "dbat0l";
- case 538: return "dbat1u";
- case 539: return "dbat1l";
- case 540: return "dbat2u";
- case 541: return "dbat2l";
- case 542: return "dbat3u";
- case 543: return "dbat3l";
- case 1013: return "dabr";
-
- case 0: return "mq"; // 601
- case 4: return "rtcu"; // 601
- case 5: return "rtcl"; // 601
- case 20: return "rtcu"; // 601
- case 21: return "rtcl"; // 601
- case 952: return "mmcr0"; // 604
- case 953: return "pmc1"; // 604
- case 954: return "pmc2"; // 604
- case 955: return "sia"; // 604
- case 956: return "mmcr1"; // 604e
- case 957: return "pmc3"; // 604e
- case 958: return "pmc4"; // 604e
- case 959: return "sda"; // 604
- case 976: return "dmiss"; // 603
- case 977: return "dcmp"; // 603
- case 978: return "hash1"; // 603
- case 979: return "hash2"; // 603
- case 980: return "imiss"; // 603
- case 981: return "icmp"; // 603
- case 982: return "rpa"; // 603
- case 1008: return "hid0"; // 601/603/604
- case 1009: return "hid1"; // 601/603/604e
- case 1010: return "iabr"; // 601/603
- case 1023: return "pir"; // 601/604
-
- case 256: return "vrsave"; // AltiVec
-
- default: return NULL;
- }
-}
-
diff --git a/disass_ppc/disass/disass/disass.vcproj b/disass_ppc/disass/disass/disass.vcproj
deleted file mode 100644
index 7c3a745..0000000
--- a/disass_ppc/disass/disass/disass.vcproj
+++ /dev/null
@@ -1,209 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/disass_ppc/disass/disass/disass.vcxproj b/disass_ppc/disass/disass/disass.vcxproj
deleted file mode 100644
index 9b91019..0000000
--- a/disass_ppc/disass/disass/disass.vcxproj
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
-
- {0EFAD09B-472F-4309-865E-E026D04B7966}
- disass
- Win32Proj
-
-
-
- Application
- v120
- Unicode
- true
-
-
- DynamicLibrary
- v120
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>12.0.21005.1
-
-
- $(SolutionDir)$(Configuration)\
- $(Configuration)\
- true
-
-
- $(SolutionDir)$(Configuration)\
- $(Configuration)\
- false
-
-
-
- Disabled
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebugDLL
- Use
- Level3
- EditAndContinue
-
-
- true
- Console
- MachineX86
-
-
-
-
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- MultiThreadedDLL
- Use
- Level3
- ProgramDatabase
-
-
- true
- Console
- true
- true
- MachineX86
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/disass_ppc/disass/disass/disass.vcxproj.filters b/disass_ppc/disass/disass/disass.vcxproj.filters
deleted file mode 100644
index b773f0f..0000000
--- a/disass_ppc/disass/disass/disass.vcxproj.filters
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hpp;hxx;hm;inl;inc;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
-
-
-
-
- Source Files
-
-
-
-
- Header Files
-
-
- Header Files
-
-
-
-
-
-
\ No newline at end of file
diff --git a/disass_ppc/disass/disass/mon.h b/disass_ppc/disass/disass/mon.h
deleted file mode 100644
index 03d0460..0000000
--- a/disass_ppc/disass/disass/mon.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * mon.h - cxmon main program
- *
- * cxmon (C) 1997-2004 Christian Bauer, Marc Hellwig
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef MON_H
-#define MON_H
-
-#include
-
-
-/*
- * Initialization, deinitialization and invocation
- */
-
-void mon_init();
-void mon_exit();
-void mon(int argc, char **argv);
-
-
-/*
- * Definitions for adding commands to mon
- */
-
-// Input tokens
-enum Token {
- T_NULL, // Invalid token
- T_END, // End of line
- T_NUMBER, // Hexadecimal/decimal number (uint32)
- T_STRING, // String enclosed in ""
- T_NAME, // Variable name
- T_DOT, // '.'
- T_COLON, // ':'
- T_COMMA, // ','
- T_LPAREN, // '('
- T_RPAREN, // ')'
- T_PLUS, // '+'
- T_MINUS, // '-'
- T_MUL, // '*'
- T_DIV, // '/'
- T_MOD, // '%'
- T_AND, // '&'
- T_OR, // '|'
- T_EOR, // '^'
- T_SHIFTL, // '<<'
- T_SHIFTR, // '>>'
- T_NOT, // '~'
- T_ASSIGN // '='
-};
-
-// Scanner variables
-extern enum Token mon_token; // Last token read
-extern unsigned int mon_number; // Contains the number if mon_token==T_NUMBER
-extern char *mon_string; // Contains the string if mon_token==T_STRING
-extern char *mon_name; // Contains the variable name if mon_token==T_NAME
-
-// Streams for input, output and error messages
-extern FILE *monin, *monout, *monerr;
-
-// Current address, value of '.' in expressions
-extern unsigned int mon_dot_address;
-
-extern bool mon_use_real_mem; // Flag: mon is using real memory
-extern unsigned int mon_mem_size; // Size of mon buffer (if mon_use_real_mem = false)
-
-extern bool mon_macos_mode; // Flag: enable features in the disassembler for working with MacOS code
-
-// Add command to mon
-extern void mon_add_command(const char *name, void (*func)(), const char *help_text);
-
-// Functions for commands
-extern void mon_error(const char *s); // Print error message
-extern enum Token mon_get_token(); // Get next token
-extern bool mon_expression(unsigned int *number); // Parse expression
-extern bool mon_aborted(); // Check if Ctrl-C was pressed
-
-// Memory access
-extern unsigned int (*mon_read_byte)(unsigned int adr);
-extern void (*mon_write_byte)(unsigned int adr, unsigned int b);
-extern unsigned int mon_read_half(unsigned int adr);
-extern void mon_write_half(unsigned int adr, unsigned int w);
-extern unsigned int mon_read_word(unsigned int adr);
-extern void mon_write_word(unsigned int adr, unsigned int l);
-
-#endif
diff --git a/disass_ppc/disass/disass/stdafx.h b/disass_ppc/disass/disass/stdafx.h
deleted file mode 100644
index 0be0e6f..0000000
--- a/disass_ppc/disass/disass/stdafx.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently, but
-// are changed infrequently
-//
-
-#pragma once
-
-#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
-#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#include
-#include
-
-
-
-// TODO: reference additional headers your program requires here
diff --git a/disass_ppc/disass/ipch/disass-db224703/disass-803e4bd3.ipch b/disass_ppc/disass/ipch/disass-db224703/disass-803e4bd3.ipch
deleted file mode 100644
index 190fc77..0000000
Binary files a/disass_ppc/disass/ipch/disass-db224703/disass-803e4bd3.ipch and /dev/null differ
diff --git a/gdb.py b/gdb.py
index a856763..29a91f1 100644
--- a/gdb.py
+++ b/gdb.py
@@ -8,10 +8,10 @@
import subprocess
import os
import re
-from ctypes import *
+from capstone import *
from iodideGUI import TestSearchCtrl
from socket import *
-import ctypes
+import struct
try:
from agw import hyperlink as hl
@@ -301,10 +301,11 @@ def OnCellClicked (self, cell, x, y, event):
self.win.Bind(wx.EVT_MENU, self.OnPopupReadmem, id=self.win.popupID2)
menu = wx.Menu()
item = wx.MenuItem(menu, self.win.popupID1, "Disassemble")
- menu.AppendItem(item)
+ menu.Append(item)
menu.Append(self.win.popupID2, "Read memory")
self.win.PopupMenu(menu)
menu.Destroy()
+ return 0
#-------Main gdb class---------------------------------------------------------------------
@@ -573,6 +574,7 @@ def GdbCommand(self, command):
"""
reply = ""
char = ""
+ command = command.encode('ascii')
if self.connect_mode == "Serial":
@@ -693,8 +695,7 @@ def OnConnect(self, evt):
connectstatuswin.SetFocus()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
connectstatuswin.SetIcon(icon)
g1 = wx.Gauge(connectstatuswin, -1, 4200, (5, 20), (200, 25))
@@ -758,8 +759,7 @@ def OnConnect(self, evt):
self.win.statusbar.SetStatusText("", 0)
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
self.connectgdbwin.SetIcon(icon)
vs = wx.BoxSizer( wx.VERTICAL )
@@ -987,8 +987,7 @@ def OnConfigureConnection (self,evt):
self.connectconfwin = self.CreateConnectConfWindow()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
self.connectconfwin.SetIcon(icon)
vs = wx.BoxSizer( wx.VERTICAL )
@@ -1169,7 +1168,7 @@ def OnDownload(self, evt):
dlg = wx.FileDialog(
self.win, message="Save file as ...", defaultDir=os.getcwd(),
- defaultFile="", wildcard=wildcard, style=wx.SAVE
+ defaultFile="", wildcard=wildcard, style=wx.FD_SAVE
)
dlg.SetFilterIndex(2)
@@ -1184,8 +1183,7 @@ def OnDownload(self, evt):
downloadwin = self.CreateDownloadWindow()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
downloadwin.SetIcon(icon)
downloadwin.Center()
@@ -1290,7 +1288,7 @@ def OnUpload(self, evt):
path = ""
dlg = wx.FileDialog(
self.win, message="Choose a file", defaultDir=os.getcwd(),
- defaultFile="default", wildcard="*.*", style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR
+ defaultFile="default", wildcard="*.*", style=wx.FD_OPEN | wx.FD_MULTIPLE | wx.FD_CHANGE_DIR
)
dlg.SetFilterIndex(2)
@@ -1385,7 +1383,7 @@ def OnSaveRunningConfig(self, evt):
path = ""
dlg = wx.FileDialog(self.win, message="Save file as ...", defaultDir=os.getcwd(),
- defaultFile="default", wildcard="*.txt", style=wx.SAVE)
+ defaultFile="default", wildcard="*.txt", style=wx.FD_SAVE)
dlg.SetFilterIndex(2)
@@ -1415,7 +1413,7 @@ def OnSave(self, evt):
dlg = wx.FileDialog(
self.win, message="Save file as ...", defaultDir=os.getcwd(),
- defaultFile="default", wildcard="*.iod", style=wx.SAVE
+ defaultFile="default", wildcard="*.iod", style=wx.FD_SAVE
)
dlg.SetFilterIndex(2)
@@ -1511,7 +1509,7 @@ def OnOpen(self, evt):
tmpcomment = []
dlg = wx.FileDialog(
self.win, message="Choose a file", defaultDir=os.getcwd(),
- defaultFile="default", wildcard="*.iod", style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR
+ defaultFile="default", wildcard="*.iod", style=wx.FD_OPEN | wx.FD_MULTIPLE | wx.FD_CHANGE_DIR
)
dlg.SetFilterIndex(2)
@@ -2228,8 +2226,7 @@ def OnReadMem(self, evt):
self.memreadwin = self.CreateMemoryWindow ()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
self.memreadwin.SetIcon(icon)
self.MemoryHTMLCtrl = wx.html.HtmlWindow(self.memreadwin, -1, wx.DefaultPosition, wx.Size(700, 195))
@@ -2238,10 +2235,10 @@ def OnReadMem(self, evt):
memtoolbar = self.memreadwin.CreateToolBar()
- memtoolbar.AddSimpleTool(ID_mem_back, wx.Image('images/av_back_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Display previous memory', 'Display previous memory')
+ memtoolbar.AddTool(ID_mem_back, 'Display previous memory', wx.Image('images/av_back_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Display previous memory')
self.win.Bind(wx.EVT_TOOL, self.OnMemBackClick, id=ID_mem_back)
- memtoolbar.AddSimpleTool(ID_mem_forward, wx.Image('images/av_play_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Display next memory', 'Display next memory')
+ memtoolbar.AddTool(ID_mem_forward, 'Display next memory', wx.Image('images/av_play_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Display next memory')
self.win.Bind(wx.EVT_TOOL, self.OnMemForwardClick, id=ID_mem_forward)
memtoolbar.AddSeparator()
@@ -2249,7 +2246,7 @@ def OnReadMem(self, evt):
search = TestSearchCtrl(memtoolbar, size=(150,-1), doSearch=self.DoMemSearch)
memtoolbar.AddControl(search)
- memtoolbar.AddSimpleTool(ID_search_mem_next, wx.Image('images/forward_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Find next', 'Find next')
+ memtoolbar.AddTool(ID_search_mem_next, 'Find next', wx.Image('images/forward_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Find next')
self.win.Bind(wx.EVT_TOOL, self.OnSearchNext, id=ID_search_mem_next)
@@ -2502,8 +2499,7 @@ def OnDisplayRegistry (self, evt):
if not self.registrywin:
self.registrywin = self.CreateRegistryWindow ()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
self.registrywin.SetIcon(icon)
self.RegistryHTMLCtrl = wx.html.HtmlWindow(self.registrywin, -1, wx.DefaultPosition, wx.Size(692, 400))
@@ -2542,8 +2538,7 @@ def OnRunningConfig(self, evt):
if not self.runningconfigwin:
self.runningconfigwin = self.CreateRunningConfigWindow ()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
self.runningconfigwin.SetIcon(icon)
self.RunningConfigHTMLCtrl = wx.html.HtmlWindow(self.runningconfigwin, -1, wx.DefaultPosition, wx.Size(592, 600))
@@ -2565,8 +2560,7 @@ def OnProcesses(self, evt):
if not self.processeswin:
self.processeswin = self.CreateProcessesWindow ()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
self.processeswin.SetIcon(icon)
self.ProcessesHTMLCtrl = wx.html.HtmlWindow(self.processeswin, -1, wx.DefaultPosition, wx.Size(312, 400))
@@ -2602,8 +2596,7 @@ def OnMemMap(self, evt):
if not self.memmapwin:
self.memmapwin = self.CreateMemmapWindow ()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
self.memmapwin.SetIcon(icon)
self.MemmapHTMLCtrl = MemmapHTML(self.memmapwin, -1, wx.DefaultPosition, wx.Size(420, 400))
@@ -2760,8 +2753,7 @@ def OnReadHeap(self, evt):
self.heapreadwin = self.CreateHeapWindow ()
image = wx.Image('images/iodide16x16.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
- icon = wx.EmptyIcon()
- icon.CopyFromBitmap(image)
+ icon = wx.Icon(image)
self.heapreadwin.SetIcon(icon)
self.HeapHTMLCtrl = MemmapHTML(self.heapreadwin, -1, wx.DefaultPosition, wx.Size(650, 600))
@@ -2770,10 +2762,10 @@ def OnReadHeap(self, evt):
heaptoolbar = self.heapreadwin.CreateToolBar()
- heaptoolbar.AddSimpleTool(ID_block_back, wx.Image('images/av_back_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Display previous block', 'Display previous block')
+ heaptoolbar.AddTool(ID_block_back, 'Display previous block', wx.Image('images/av_back_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Display previous block')
self.win.Bind(wx.EVT_TOOL, self.OnBlockBackClick, id=ID_block_back)
- heaptoolbar.AddSimpleTool(ID_block_forward, wx.Image('images/av_play_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Display next block', 'Display next block')
+ heaptoolbar.AddTool(ID_block_forward, 'Display next block', wx.Image('images/av_play_small.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'Display next block')
self.win.Bind(wx.EVT_TOOL, self.OnBlockForwardClick, id=ID_block_forward)
heaptoolbar.Realize()
@@ -2836,7 +2828,7 @@ def DisplayHeap(self, address, memory):
displaybuffer = displaybuffer + "
Alloc name: "
displaybuffer = displaybuffer + "" #dark blue
formatted = self.CreateGetMemoryReq(blockvals[3],"28")
- result = self.GdbCommand(formatted.encode('ascii')) #set read memory command
+ result = self.GdbCommand(formatted) #set read memory command
if result == "E03":
wx.MessageBox("Address can not be read", caption="Error", style=wx.OK|wx.ICON_ERROR, parent=self.win)
@@ -3145,9 +3137,7 @@ def DisassembleMemoryPPC(self, address, memory):
addr = int(address[0:8],16)
displaybuffer = ""
-# dis = cdll.disass #access disass.dll
- dis = ctypes.cdll.LoadLibrary("disass.dll") #access disass.dll
- result = create_string_buffer('\000' * 32)
+ dis = Cs(CS_ARCH_PPC, CS_MODE_32)
i = j = l = x = y = 0
res = ""
@@ -3156,12 +3146,11 @@ def DisassembleMemoryPPC(self, address, memory):
k = 0
tmp = memory[i:i+8]
- word =int(tmp ,16)
- dis.disass_ppc(result,addr,word)
+ word = struct.pack("