📄 cofflib.cpp
字号:
{
Next = Current->next;
free( Current );
}
}
pCoffHndl->FileInfo->str_head = ( STRTAB *)NULL;
}
/*F***************************************************************************
* NAME: void swap4byte(void * addr)
*
* DESCRIPTION: Swap the order of bytes in a long.
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
void
CoffLib::swap4byte(void * addr)
{
unsigned long *value = (unsigned long *)addr;
unsigned long temp1, temp2, temp3, temp4;
temp1 = (*value) & 0xFF;
temp2 = (*value >> 8) & 0xFF;
temp3 = (*value >> 16) & 0xFF;
temp4 = (*value >> 24) & 0xFF;
*value = (temp1 << 24) | (temp2 << 16) | (temp3 << 8) | temp4;
}
/*F***************************************************************************
* NAME: void swap2byte(void * addr)
*
* DESCRIPTION: Swap the order of bytes in a short.
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
void
CoffLib::swap2byte(void * addr)
{
unsigned short *value = (unsigned short *)addr;
unsigned short temp1,temp2;
temp1 = temp2 = *value;
*value = ((temp2 & 0xFF) << 8) | ((temp1 >> 8) & 0xFF);
}
/*F***************************************************************************
* NAME:
*
* DESCRIPTION:
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
unsigned long
CoffLib::LOCTOBYTE( COFF_HNDL pCoffHndl, unsigned long wrd_size )
{
switch(pCoffHndl->FileInfo->device_id)
{
case TI_MAGIC_340 : return (wrd_size>>3); /* BIT ADDRESS UNITS */
case TI_MAGIC_370 : return (wrd_size); /* BYTE ADDRESS UNITS */
case TI_MAGIC_DSP : return (wrd_size<<1); /* 2-BYTE ADDRESS UNITS*/
case TI_MAGIC_C30 : return (wrd_size<<2); /* 4-BYTE ADDRESS UNITS*/
case TI_MAGIC_MVP : return (wrd_size); /* BYTE ADDRESS UNITS */
case TI_MAGIC_C16 : return (wrd_size); /* BYTE ADDRESS UNITS */
case TI_MAGIC_ARM : return (wrd_size); /* 1-BYTE ADDRESS UNITS*/
case TI_MAGIC_LEAD : return (wrd_size<<1); /* 2-BYTE ADDRESS UNITS*/
case TI_MAGIC_LEAD3 : return (wrd_size); /* 2-BYTE ADDRESS UNITS*/
case TI_MAGIC_ANKOOR: return (wrd_size<<1); /* 2-BYTE ADDRESS UNITS*/
case TI_MAGIC_C60 : return (wrd_size); /* BYTE ADDRESS UNITS */
case TI_MAGIC_380 : /* NOT SUPPORTED - FALLTHROUGH TO DEFAULT */
default : /* THIS IS ACTUALLY AN ERROR - UNSUPPORTED DEVICE*/
return ( 0 );
}
}
/*F***************************************************************************
* NAME:
*
* DESCRIPTION:
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
unsigned long
CoffLib::BYTETOLOC( COFF_HNDL pCoffHndl, unsigned long byte_size )
{
switch(pCoffHndl->FileInfo->device_id)
{
case TI_MAGIC_340 : return (byte_size<<3); /* BIT ADDRESS UNITS */
case TI_MAGIC_370 : return (byte_size); /* BYTE ADDRESS UNITS */
case TI_MAGIC_DSP : return (byte_size>>1); /* 2-BYTE ADDRESS UNITS*/
case TI_MAGIC_C30 : return (byte_size>>2); /* 4-BYTE ADDRESS UNITS*/
case TI_MAGIC_MVP : return (byte_size); /* BYTE ADDRESS UNITS */
case TI_MAGIC_C16 : return (byte_size); /* BYTE ADDRESS UNITS */
case TI_MAGIC_ARM : return (byte_size); /* 1-BYTE ADDRESS UNITS*/
case TI_MAGIC_LEAD : return (byte_size>>1); /* 2-BYTE ADDRESS UNITS*/
case TI_MAGIC_LEAD3 : return (byte_size); /* 2-BYTE ADDRESS UNITS*/
case TI_MAGIC_ANKOOR : return (byte_size>>1); /* 2-BYTE ADDRESS UNITS*/
case TI_MAGIC_C60 : return (byte_size); /* BYTE ADDRESS UNITS */
case TI_MAGIC_380 : /* NOT SUPPORTED - FALLTHROUGH TO DEFAULT */
default : /* THIS IS ACTUALLY AN ERROR - UNSUPPORTED DEVICE*/
return ( 0 );
}
}
/*F***************************************************************************
* NAME:
*
* DESCRIPTION:
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
unsigned long
CoffLib::CINIT_ALIGN( COFF_HNDL pCoffHndl )
{
switch(pCoffHndl->FileInfo->device_id)
{
case TI_MAGIC_340 : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_370 : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_DSP : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_C30 : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_MVP : return ( 4 ); /* WORD ALIGNED CINIT RECORDS */
case TI_MAGIC_C16 : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_ARM : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_LEAD : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_LEAD3 : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_ANKOOR: return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_C60 : return ( 1 ); /* BYTE ALIGNED CINIT RECORDS */
case TI_MAGIC_380 : /* NOT SUPPORTED - FALLTHROUGH TO DEFAULT */
default : /* THIS IS ACTUALLY AN ERROR - UNSUPPORTED DEVICE*/
return ( 0 );
}
}
/*F***************************************************************************
* NAME:
*
* DESCRIPTION:
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
size_t
CoffLib::T_IADDR_SIZE( COFF_HNDL pCoffHndl )
{
switch(pCoffHndl->FileInfo->device_id)
{
case TI_MAGIC_340 : return ( 4 ); /* 4 BYTES PER TARGET CINIT A */
case TI_MAGIC_370 : return ( 2 ); /* 2 BYTES PER TARGET CINIT A */
case TI_MAGIC_DSP : return ( 2 ); /* 2 BYTES PER TARGET CINIT A */
case TI_MAGIC_C30 : return ( 4 ); /* 4 BYTES PER TARGET CINIT A */
case TI_MAGIC_MVP : return ( 4 ); /* 4 BYTES PER TARGET CINIT A */
case TI_MAGIC_C16 : return ( 2 ); /* 2 BYTES PER TARGET CINIT A */
case TI_MAGIC_ARM : return ( 4 ); /* 4 BYTES PER TARGET CINIT A */
case TI_MAGIC_LEAD : return ( 2 ); /* 2 BYTES PER TARGET CINIT A */
case TI_MAGIC_LEAD3 : return ( 3 ); /* 2 BYTES PER TARGET CINIT A */
case TI_MAGIC_ANKOOR: return ( 2 ); /* 2 BYTES PER TARGET CINIT A */
case TI_MAGIC_C60 : return ( 4 ); /* 4 BYTES PER TARGET CINIT A */
case TI_MAGIC_380 : /* NOT SUPPORTED - FALLTHROUGH TO DEFAULT */
default : /* THIS IS ACTUALLY AN ERROR - UNSUPPORTED DEVICE*/
return ( 0 );
}
}
/*F***************************************************************************
* NAME:
*
* DESCRIPTION:
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
size_t
CoffLib::T_SIZE_SIZE( COFF_HNDL pCoffHndl)
{
switch(pCoffHndl->FileInfo->device_id)
{
case TI_MAGIC_340 : return ( 2 ); /* 2 BYTES PER CINIT SIZE */
case TI_MAGIC_370 : return ( 2 ); /* 2 BYTES PER CINIT SIZE */
case TI_MAGIC_DSP : return ( 2 ); /* 2 BYTES PER CINIT SIZE */
case TI_MAGIC_C30 : return ( 4 ); /* 4 BYTES PER CINIT SIZE */
case TI_MAGIC_MVP : return ( 4 ); /* 4 BYTES PER CINIT SIZE */
case TI_MAGIC_C16 : return ( 4 ); /* 4 BYTES PER CINIT SIZE */
case TI_MAGIC_ARM : return ( 4 ); /* 4 BYTES PER CINIT SIZE */
case TI_MAGIC_LEAD : return ( 2 ); /* 2 BYTES PER CINIT SIZE */
case TI_MAGIC_LEAD3 : return ( 2 ); /* 2 BYTES PER CINIT SIZE */
case TI_MAGIC_ANKOOR: return ( 2 ); /* 2 BYTES PER CINIT SIZE */
case TI_MAGIC_C60 : return ( 4 ); /* 4 BYTES PER CINIT SIZE */
case TI_MAGIC_380 : /* NOT SUPPORTED - FALLTHROUGH TO DEFAULT */
default : /* THIS IS ACTUALLY AN ERROR - UNSUPPORTED DEVICE*/
return ( 0 );
}
}
/*F***************************************************************************
* NAME:
*
* DESCRIPTION:
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
size_t
CoffLib::T_ADDR_SIZE( COFF_HNDL pCoffHndl)
{
switch(pCoffHndl->FileInfo->device_id)
{
case TI_MAGIC_340 : return ( 4 ); /* 4 BYTES PER TARGET ADDRESS */
case TI_MAGIC_370 : return ( 2 ); /* 2 BYTES PER TARGET ADDRESS */
case TI_MAGIC_DSP : return ( 2 ); /* 2 BYTES PER TARGET ADDRESS */
case TI_MAGIC_C30 : return ( 4 ); /* 4 BYTES PER TARGET ADDRESS */
case TI_MAGIC_MVP : return ( 4 ); /* 4 BYTES PER TARGET ADDRESS */
case TI_MAGIC_C16 : return ( 4 ); /* 4 BYTES PER TARGET ADDRESS */
case TI_MAGIC_ARM : return ( 4 ); /* 4 BYTES PER TARGET ADDRESS */
case TI_MAGIC_LEAD : return ( 2 ); /* 2 BYTES PER TARGET ADDRESS */
case TI_MAGIC_LEAD3 : return ( 4 ); /* 4 BYTES PER TARGET ADDRESS */
case TI_MAGIC_ANKOOR: return ( 4 ); /* 4 BYTES PER TARGET ADDRESS */
case TI_MAGIC_C60 : return ( 4 ); /* 4 BYTES PER TARGET ADDRESS */
case TI_MAGIC_380 : /* NOT SUPPORTED - FALLTHROUGH TO DEFAULT */
default : /* THIS IS ACTUALLY AN ERROR - UNSUPPORTED DEVICE*/
return ( 0 );
}
}
/*F***************************************************************************
* NAME:
*
* DESCRIPTION:
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
size_t
CoffLib::T_DATA_SIZE( COFF_HNDL pCoffHndl)
{
switch(pCoffHndl->FileInfo->device_id)
{
case TI_MAGIC_340 : return ( 2 ); /* 2 BYTES PER TARGET DATA */
case TI_MAGIC_370 : return ( 1 ); /* 1 BYTES PER TARGET DATA */
case TI_MAGIC_DSP : return ( 2 ); /* 2 BYTES PER TARGET DATA */
case TI_MAGIC_C30 : return ( 4 ); /* 4 BYTES PER TARGET DATA */
case TI_MAGIC_MVP : return ( 4 ); /* 4 BYTES PER TARGET DATA */
case TI_MAGIC_C16 : return ( 2 ); /* 2 BYTES PER TARGET DATA */
case TI_MAGIC_ARM : return ( 4 ); /* 4 BYTES PER TARGET DATA */
case TI_MAGIC_LEAD : return ( 2 ); /* 2 BYTES PER TARGET DATA */
case TI_MAGIC_LEAD3 : return ( 2 ); /* 2 BYTES PER TARGET DATA */
case TI_MAGIC_ANKOOR: return ( 2 ); /* 2 BYTES PER TARGET DATA */
case TI_MAGIC_C60 : return ( 4 ); /* 4 BYTES PER TARGET DATA */
case TI_MAGIC_380 : /* NOT SUPPORTED - FALLTHROUGH TO DEFAULT */
default : /* THIS IS ACTUALLY AN ERROR - UNSUPPORTED DEVICE*/
return ( 0 );
}
}
/*F***************************************************************************
* NAME:
*
* DESCRIPTION:
*
* INPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* OUTPUTS:
* PARAMETERS:
*
* GLOBALS:
*
* RETURN:
*
* NOTES:
*
*F***************************************************************************/
size_t
CoffLib::CINIT_WSIZE( COFF_HNDL pCoffHndl)
{
switch(pCoffHndl->FileInfo->device_id)
{
case TI_MAGIC_340 : return ( 2 ); /* 2-BYTES PER DATA ITEM */
case TI_MAGIC_370 : return ( 1 ); /* BYTE PER DATA ITEM */
case TI_MAGIC_DSP : return ( 2 ); /* 2-BYTES PER DATA ITEM */
case TI_MAGIC_C30 : return ( 4 ); /* 4-BYTES PER DATA ITEM */
case TI_MAGIC_MVP : return ( 1 ); /* BYTE PER DATA ITEM */
case TI_MAGIC_C16 : return ( 4 ); /* NOTE! 4-BYTES PER DATA ITEM*/
case TI_MAGIC_ARM : return ( 4 ); /* 4-BYTES PER DATA ITEM */
case TI_MAGIC_LEAD : return ( 2 ); /* 2-BYTES PER DATA ITEM */
case TI_MAGIC_LEAD3 : return ( 2 ); /* 2-BYTES PER DATA ITEM */
case TI_MAGIC_ANKOOR: return ( 2 ); /* 2-BYTES PER DATA ITEM */
case TI_MAGIC_C60 : return ( 4 );
case TI_MAGIC_380 : /* NOT SUPPORTED - FALLTHROUGH TO DEFAULT */
default : /* THIS IS ACTUALLY AN ERROR - UNSUPPORTED DEVICE*/
return ( 0 );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -