当前位置: 代码迷 >> 汇编语言 >> 大家帮帮忙?看看这是什么意思?解决方法
  详细解决方案

大家帮帮忙?看看这是什么意思?解决方法

热度:4918   发布时间:2013-02-26 00:00:00.0
大家帮帮忙?看看这是什么意思?
#include   "stdafx.h "
#include   <Windows.h>

unsigned   char   BitSwapAsm[7]   =
{
        0x48,   0x8B,   0xC1,   //   mov   rax,   rcx
        0x48,   0x0F,   0xC8,   //   bswap   rax
        0xC3                             //   retn
};
__int64   (*BitSwap)(__int64   Value)   =   (__int64   (*)(__int64))   (ULONG_PTR)   BitSwapAsm;

int   _tmain(int   argc,   _TCHAR*   argv[])
{
        //
        //   I   have   to   change   the   page   protection,   otherwise   the   code   would   crash
        //
        DWORD   dwOldProtect;
        VirtualProtect(BitSwap,   sizeof   (BitSwapAsm),   PAGE_EXECUTE_READWRITE,   &dwOldProtect);

        printf_s( "%p\n ",   BitSwap(0xDDCCBBAA));
        getchar();
}

BitSwapAsm是一个字符数组,BitSwap是一个   有一个__int64型的参数且返回值为__int64型的函数的指针。该指针指向BitSwapAsm字符数组。从它的注释来看其中BitSwap主要完成字符串的交换,但是不知道是怎么完成的?
0x48,   0x8B,   0xC1,   //   mov   rax,   rcx
        0x48,   0x0F,   0xC8,   //   bswap   rax
        0xC3                             //   retn
这样就完成了?


------解决方案--------------------------------------------------------
谁说VC2005不支持汇编了。你不会是创了托管C++吧。
------解决方案--------------------------------------------------------
我是菜鸟,我不懂!
------解决方案--------------------------------------------------------
应该是吧BitSwapAsm强制转换成了一个程序入口吧,执行了里面的三句汇编码?实现了转换?偶是菜鸟,猜的.....
------解决方案--------------------------------------------------------
帮顶
------解决方案--------------------------------------------------------
我想也是这样。。。
但是我想知道 三行字符串怎样是代表了三行汇编语句。
/////////////////////////////////
debug
-u
看机器指令你就明白了。
------解决方案--------------------------------------------------------
帮顶了
------解决方案--------------------------------------------------------
是字节顺序的转换,不是bit转换。
命名有问题。
  相关解决方案