首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

汇编转VC,希望能帮忙。解决办法

2013-12-04 
汇编转VC,希望能帮忙。[解决办法]分析一下代码,理解了函数负责的工作,可以直接自己实现了。[解决办法]去汇编

汇编转VC,希望能帮忙。


[解决办法]
分析一下代码,理解了函数负责的工作,可以直接自己实现了。
[解决办法]
去汇编板块问问吧!看看实现的啥功能,然后再用vc来实现相同功能就成!
[解决办法]
为了通过编译,作了一些修改,仅供理解汇编:
#include <Windows.h>
//#include "create_index.h"

struct INDEX_DESC
{
DWORDm_dwIndex;
INDEX_DESC*m_pNext;
};

#defineINDEX_DESC_SIZE8

class CIndexCreator
{
public: /*加*/
INDEX_DESC*m_pIndexList;
INDEX_DESC*m_pBaseDesc;
INDEX_DESC**m_ppIndexDescTable;
DWORDm_dwIndexNum;
DWORDm_dwMaxIndexNum;
public:
BOOLInitialize(DWORD dwMaxNum);
DWORDGetIndexNum(){return m_dwIndexNum;}



CIndexCreator();
~CIndexCreator();
};


void InitializeIndexDesc(void* pEntry,DWORD dwNum);

CIndexCreator::CIndexCreator()
{
memset(this,0,sizeof(CIndexCreator));
}

BOOL CIndexCreator::Initialize(DWORD dwMaxNum)
{
m_dwMaxIndexNum = dwMaxNum;
m_pIndexList = new INDEX_DESC[m_dwMaxIndexNum];
InitializeIndexDesc(m_pIndexList,m_dwMaxIndexNum);
m_pBaseDesc = m_pIndexList;

m_ppIndexDescTable = new INDEX_DESC*[m_dwMaxIndexNum];
memset(m_ppIndexDescTable,0,sizeof(INDEX_DESC*)*m_dwMaxIndexNum);

m_dwMaxIndexNum--;

return TRUE;
}

DWORD NewICAllocIndex(CIndexCreator* pIC) //DWORD __declspec(naked) NewICAllocIndex(CIndexCreator* pIC)
{
  DWORD dwIndex = 0;
  if (pIC->m_pBaseDesc)
  {
    dwIndex = pIC->m_pBaseDesc->m_dwIndex;
    pIC->m_pBaseDesc = pIC->m_pBaseDesc->m_pNext;
    pIC->m_ppIndexDescTable[dwIndex] = pIC->m_pBaseDesc;
    pIC->m_dwIndexNum++;
  }
  return dwIndex;
}

void __declspec(naked) NewICFreeIndex(CIndexCreator* pIC,DWORD dwIndex)
{
  if (pIC->m_ppIndexDescTable[dwIndex])
  {
    INDEX_DESC* pDesc = pIC->m_ppIndexDescTable[dwIndex];
    pIC->m_ppIndexDescTable[dwIndex] = NULL;
    pDesc->m_pNext = pIC->m_pBaseDesc;
    pIC->m_pBaseDesc = pDesc;
  }
}

CIndexCreator::~CIndexCreator()
{
if (m_pIndexList)
{
delete [] m_pIndexList;
m_pIndexList = NULL;
}
if (m_ppIndexDescTable)
{
delete [] m_ppIndexDescTable;
m_ppIndexDescTable = NULL;
}
}

void InitializeIndexDesc(void* pEntry,DWORD dwNum)//void __declspec(naked) InitializeIndexDesc(void* pEntry,DWORD dwNum)
{
  INDEX_DESC* pDesc = (INDEX_DESC*)pEntry;
  DWORDm_dwIndex;
  for (m_dwIndex = 0; m_dwIndex < dwNum; m_dwIndex++)
  {
    pDesc->m_dwIndex = m_dwIndex;
    pDesc->m_pNext = pDesc + 1;
    pDesc++;
  }
}


[解决办法]
汇编超过5行就看不懂的路过汇编转VC,希望能帮忙。解决办法
[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

[解决办法]

汇编超过5--行就看不懂的路过。。。

热点排行