From 2bdeda8d070b998d6f9b0b59f2c400ca0c1c0aea Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sun, 21 Jan 2007 15:06:57 +0000 Subject: [PATCH] fixing a small disambler bug for mr svn path=/trunk/; revision=25553 --- rosapps/devutils/cputointel/CpuToIntel.c | 6 ++++-- rosapps/devutils/cputointel/From/PPC/PPCBrain.h | 13 +++++++++++++ rosapps/devutils/cputointel/From/PPC/PPCopcode.c | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/rosapps/devutils/cputointel/CpuToIntel.c b/rosapps/devutils/cputointel/CpuToIntel.c index 1509eb4bea8..d3c85ac4bd8 100644 --- a/rosapps/devutils/cputointel/CpuToIntel.c +++ b/rosapps/devutils/cputointel/CpuToIntel.c @@ -98,9 +98,11 @@ int main(int argc, char * argv[]) // mode 1 convert to intel // mode 2 convert to ppc //return LoadPFileImage(infile,outfile,BaseAddress,cpuid,type, mode); - return LoadPFileImage("e:\\testppc.exe","e:\\cputointel.asm",0,0,0,1); - // return LoadPFileImage("e:\\testms.exe","e:\\cputointel.asm",0,0,0,1); // convert + LoadPFileImage("e:\\testppc.exe","e:\\cputoppc.asm",0,0,0,1); + LoadPFileImage("e:\\testppc.exe","e:\\cputointel.asm",0,0,0,2); + // return LoadPFileImage("e:\\testms.exe","e:\\cputointel.asm",0,0,0,1); // convert + return 0; } diff --git a/rosapps/devutils/cputointel/From/PPC/PPCBrain.h b/rosapps/devutils/cputointel/From/PPC/PPCBrain.h index 5397f789499..7b07728645b 100644 --- a/rosapps/devutils/cputointel/From/PPC/PPCBrain.h +++ b/rosapps/devutils/cputointel/From/PPC/PPCBrain.h @@ -15,6 +15,19 @@ CPU_BYTE cpuPPCInit_Li[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0 CPU_BYTE cpuPPCInit_stw[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,0,2,2}; CPU_BYTE cpuPPCInit_stwu[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,1,2,2}; CPU_BYTE cpuPPCInit_mr[32] = {0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,1,2,2,2,2,2,2,2,2,0,1,1,1,1,1,2,2}; + + +/* +CPU_BYTE cpuPPCInit_stw[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,0,2,2}; +CPU_BYTE cpuPPCInit_stwu[32] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,1,2,2}; +CPU_BYTE cpuPPCInit_mr[32] = {0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,1,2,2,2,2,2,2,2,2,0,1,1,1,1,1,2,2}; + +00: 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,1,2,2 stwu r1,-32(r1) +04: 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,0,2,2 stw r31,28(r1) +08: 0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,1,2,2,2,2,2,2,2,2,0,1,1,1,1,1,2,2 mr r31,r1 +0c: 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,1,0,0,2,2 stw r3,8(r31) +10: 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,2,2 lwz r9,8(r31) +*/ /* mask */ /* * no mask we implement function getting the reg right diff --git a/rosapps/devutils/cputointel/From/PPC/PPCopcode.c b/rosapps/devutils/cputointel/From/PPC/PPCopcode.c index 7d51b54a360..ffe71571814 100644 --- a/rosapps/devutils/cputointel/From/PPC/PPCopcode.c +++ b/rosapps/devutils/cputointel/From/PPC/PPCopcode.c @@ -110,7 +110,7 @@ CPU_INT PPC_mr( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, return -1; } pMyBrainAnalys->op = OP_ANY_mov; - pMyBrainAnalys->type= 2 + 8 + 16; /* 8 dst reg, 2 src reg */ + pMyBrainAnalys->type= 2 + 8; /* 8 dst reg, 2 src reg */ pMyBrainAnalys->src_size = 32; pMyBrainAnalys->src = PPC_GetBitArraySrcReg(opcode); pMyBrainAnalys->dst = PPC_GetBitArrayBto31xx(opcode);