reactos/rosapps/devutils/cputointel/misc.c

200 lines
3.5 KiB
C
Raw Normal View History

/* only for getting the pe struct */
#include <windows.h>
#include <winnt.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "misc.h"
#include "any_op.h"
#include "From/ARM/ARM.h"
#include "From/m68k/m68k.h"
#include "From/PPC/PPC.h"
/* retun
* 0 = Ok
* 1 = unimplemt
* 2 = Unkonwn Opcode
* 3 = can not open read file
* 4 = can not open write file
* 5 = can not seek to end of read file
* 6 = can not get the file size of the read file
* 7 = read file size is Zero
* 8 = can not alloc memory
* 9 = can not read file
*-------------------------
* type 0 : auto
* type 1 : bin
* type 2 : exe/dll/sys
*/
/* Conveting bit array to a int byte */
CPU_UNINT ConvertBitToByte(CPU_BYTE *bit)
{
CPU_UNINT Byte = 0;
CPU_UNINT t;
CPU_UNINT size = 15;
for(t=size;t>0;t--)
{
if (bit[size-t] != 2)
Byte = Byte + (bit[size-t]<<t);
}
return Byte;
}
/* Conveting bit array mask to a int byte mask */
CPU_UNINT GetMaskByte(CPU_BYTE *bit)
{
CPU_UNINT MaskByte = 0;
CPU_UNINT t;
CPU_UNINT size = 15;
for(t=size;t>0;t--)
{
if (bit[size-t] == 2)
{
MaskByte = MaskByte + ( (bit[size-t]-1) <<t);
}
}
return MaskByte;
}
/* Conveting bit array to a int byte */
CPU_UNINT ConvertBitToByte32(CPU_BYTE *bit)
{
CPU_UNINT Byte = 0;
CPU_UNINT t;
CPU_UNINT size = 31;
for(t=size;t>0;t--)
{
if (bit[size-t] != 2)
Byte = Byte + (bit[size-t]<<t);
}
return Byte;
}
/* Conveting bit array mask to a int byte mask */
CPU_UNINT GetMaskByte32(CPU_BYTE *bit)
{
CPU_UNINT MaskByte = 0;
CPU_UNINT t;
CPU_UNINT size = 31;
for(t=size;t>0;t--)
{
if (bit[size-t] == 2)
{
MaskByte = MaskByte + ( (bit[size-t]-1) <<t);
}
}
return MaskByte;
}
CPU_UNINT GetData32Le(CPU_BYTE *cpu_buffer)
{
CPU_UNINT cpuint;
CPU_UNINT split1;
CPU_UNINT split2;
CPU_UNINT split3;
CPU_UNINT split4;
cpuint = *((CPU_UNINT*) &cpu_buffer[0]);
split1 = cpu_buffer[0];
split2 = cpu_buffer[1];
split3 = cpu_buffer[2];
split4 = cpu_buffer[3];
cpuint = split4+(split3 <<8 )+(split2 <<16 )+(split1 <<24 );
return cpuint;
}
CPU_UNINT GetData32Be(CPU_BYTE *cpu_buffer)
{
CPU_UNINT cpuint;
cpuint = *((CPU_UNINT*) &cpu_buffer[0]);
return cpuint;
}
CPU_INT AllocAny()
{
if (pMyBrainAnalys== NULL)
{
pMyBrainAnalys = (PMYBrainAnalys) malloc(sizeof(MYBrainAnalys));
if (pMyBrainAnalys==NULL)
{
return -1;
}
ZeroMemory(pMyBrainAnalys,sizeof(MYBrainAnalys));
pStartMyBrainAnalys = pMyBrainAnalys;
}
else
{
PMYBrainAnalys tmp;
tmp = (PMYBrainAnalys) malloc(sizeof(MYBrainAnalys));
if (tmp==NULL)
{
return -1;
}
ZeroMemory(tmp,sizeof(MYBrainAnalys));
pMyBrainAnalys->ptr_next = (CPU_BYTE*)tmp;
tmp->ptr_prev= (CPU_BYTE*)pMyBrainAnalys;
pMyBrainAnalys = tmp;
}
return 0;
}
CPU_INT FreeAny()
{
PMYBrainAnalys tmp = NULL;
if (pMyBrainAnalys == NULL)
{
return -1;
}
tmp = (PMYBrainAnalys)pMyBrainAnalys->ptr_prev;
while (pMyBrainAnalys != NULL)
{
if (pMyBrainAnalys == NULL)
{
break;
}
free(pMyBrainAnalys);
if (pMyBrainAnalys != NULL)
{
printf("fail to free memory");
return -1;
}
pMyBrainAnalys = tmp;
}
return 0;
}