⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decode.cpp

📁 获得多核硬件所有的相关信息。汇编源代码。Visual Studio2003、2005环境皆可。速度快。
💻 CPP
字号:
//---------------------------------------------------------------------------
//
// Decode.cpp: Decode Bandwidth Routines Implementation
//
//---------------------------------------------------------------------------

#include "StdAfx.h"
#include "Decode.h"

// Decode bandwidth test data
const BYTE Epilogue[4] =
{
    0xC3, 0x90, // ret; nop
    0x90, 0x90  // nop; nop
};

const BYTE CodeBlock_NOP_1BYTE[4] =
{
    0x90, 0x90, // nop; nop
    0x90, 0x90  // nop; nop
};

const BYTE CodeBlock_LEA_2BYTE[4] =
{
    0x8D, 0x00, // lea eax, [eax]
    0x8D, 0x00  // lea eax, [eax]
};

const BYTE CodeBlock_MOV_2BYTE[4] =
{
    0x89, 0xC0, // mov eax, eax
    0x89, 0xC0  // mov eax, eax
};

const BYTE CodeBlock_ADD_2BYTE[4] =
{
    0x01, 0xC0, // add eax, eax
    0x01, 0xC0  // add eax, eax
};

const BYTE CodeBlock_SUB_2BYTE[4] =
{
    0x29, 0xC0, // sub eax, eax
    0x29, 0xC0  // sub eax, eax
};

const BYTE CodeBlock_OR_2BYTE[4] =
{
    0x09, 0xC0, // or eax, eax
    0x09, 0xC0  // or eax, eax
};

const BYTE CodeBlock_XOR_2BYTE[4] =
{
    0x31, 0xC0, // xor eax, eax
    0x31, 0xC0  // xor eax, eax
};

const BYTE CodeBlock_TEST_2BYTE[4] =
{
    0x85, 0xC0, // test eax, eax
    0x85, 0xC0  // test eax, eax
};

const BYTE CodeBlock_CMP_2BYTE[4] =
{
    0x39, 0xC0, // cmp eax, eax
    0x39, 0xC0  // cmp eax, eax
};

const BYTE CodeBlock_XOR_ADD_4BYTE[4] =
{
    0x31, 0xC0, // xor eax, eax
    0x01, 0xC0  // add eax, eax
};

const BYTE CodeBlock_SHL_3BYTE[12] =
{
    0xC1, 0xE0, 0x00,   // shl eax, 0
    0xC1, 0xE0, 0x00,   // shl eax, 0
    0xC1, 0xE0, 0x00,   // shl eax, 0
    0xC1, 0xE0, 0x00    // shl eax, 0
};

const BYTE CodeBlock_ROL_3BYTE[12] =
{
    0xC1, 0xC0, 0x00,   // rol eax, 0
    0xC1, 0xC0, 0x00,   // rol eax, 0
    0xC1, 0xC0, 0x00,   // rol eax, 0
    0xC1, 0xC0, 0x00    // rol eax, 0
};

const BYTE CodeBlock_CMP_4BYTE[4] =
{
    0x66, 0x83, 0xF8, 0x00  // cmp ax, 0x00
};

const BYTE CodeBlock_CMP_0_6BYTE[12] =
{
    0x81, 0xF8, 0x00, 0x00, 0x00, 0x00, // cmp eax, 0x00000000
    0x81, 0xF8, 0x00, 0x00, 0x00, 0x00  // cmp eax, 0x00000000
};

const BYTE CodeBlock_CMP_8_6BYTE[12] =
{
    0x81, 0xF8, 0x7F, 0x00, 0x00, 0x00, // cmp eax, 0x0000007f
    0x81, 0xF8, 0x7F, 0x00, 0x00, 0x00  // cmp eax, 0x0000007f
};

const BYTE CodeBlock_CMP_16_6BYTE[12] =
{
    0x81, 0xF8, 0xFF, 0x7F, 0x00, 0x00, // cmp eax, 0x00007fff
    0x81, 0xF8, 0xFF, 0x7F, 0x00, 0x00  // cmp eax, 0x00007fff
};

const BYTE CodeBlock_CMP_32_6BYTE[12] =
{
    0x81, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, // cmp eax, 0x7fffffff
    0x81, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F  // cmp eax, 0x7fffffff
};

const BYTE CodeBlock_CMP_0_8BYTE[8] =
{
    0xF3, 0xF3, // <rep><rep>
    0x81, 0xF8, 0x00, 0x00, 0x00, 0x00  // cmp eax, 0x00000000
};

const BYTE CodeBlock_CMP_8_8BYTE[8] =
{
    0xF3, 0xF3, // <rep><rep>
    0x81, 0xF8, 0x7F, 0x00, 0x00, 0x00  // cmp eax, 0x0000007f
};

const BYTE CodeBlock_CMP_16_8BYTE[8] =
{
    0xF3, 0xF3, // <rep><rep>
    0x81, 0xF8, 0xFF, 0x7F, 0x00, 0x00  // cmp eax, 0x00007fff
};

const BYTE CodeBlock_CMP_32_8BYTE[8] =
{
    0xF3, 0xF3, // <rep><rep>
    0x81, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F  // cmp eax, 0x7fffffff
};

const BYTE CodeBlock_WAIT_1BYTE[4] =
{
    0x9B, 0x9B, // wait; wait
    0x9B, 0x9B  // wait; wait
};

const BYTE CodeBlock_FADD_2BYTE[4] =
{
    0xD8, 0xC1, // fadd st(0), st(1)
    0xD8, 0xC1  // fadd st(0), st(1)
};

const BYTE CodeBlock_FMUL_2BYTE[4] =
{
    0xD8, 0xC9, // fmul st(0), st(1)
    0xD8, 0xC9  // fmul st(0), st(1)
};

const BYTE CodeBlock_FSUB_2BYTE[4] =
{
    0xD8, 0xE1, // fsub st(0), st(1)
    0xD8, 0xE1  // fsub st(0), st(1)
};

const BYTE CodeBlock_FSUBR_2BYTE[4] =
{
    0xD8, 0xE9, // fsubr st(0), st(1)
    0xD8, 0xE9  // fsubr st(0), st(1)
};

const BYTE CodeBlock_FCHS_2BYTE[4] =
{
    0xDD, 0xE0, // fchs
    0xDD, 0xE0  // fchs
};

const BYTE CodeBlock_FABS_2BYTE[4] =
{
    0xDD, 0xE1, // fabs
    0xDD, 0xE1  // fabs
};

const BYTE CodeBlock_FTST_2BYTE[4] =
{
    0xDD, 0xE4, // ftst
    0xDD, 0xE4  // ftst
};

const BYTE CodeBlock_FXAM_2BYTE[4] =
{
    0xDD, 0xE5, // fxam
    0xDD, 0xE5  // fxam
};

const BYTE CodeBlock_FCOM_2BYTE[4] =
{
    0xD8, 0xD1, // fcom st(1)
    0xD8, 0xD1  // fcom st(1)
};

const BYTE CodeBlock_FCOMI_2BYTE[4] =
{
    0xDB, 0xF1, // fcomi st(0), st(1)
    0xDB, 0xF1  // fcomi st(0), st(1)
};

const BYTE CodeBlock_FST_2BYTE[4] =
{
    0xDD, 0xD0, // fst st(0)
    0xDD, 0xD0  // fst st(0)
};

const BYTE CodeBlock_FXCH_2BYTE[4] =
{
    0xD9, 0xC9, // fxch
    0xD9, 0xC9  // fxch
};

const BYTE CodeBlock_FDECSTP_2BYTE[4] =
{
    0xD9, 0xF6, // fdecstp
    0xD9, 0xF6  // fdecstp
};

const BYTE CodeBlock_FINCSTP_2BYTE[4] =
{
    0xD9, 0xF7, // fincstp
    0xD9, 0xF7  // fincstp
};

const BYTE CodeBlock_FFREE_2BYTE[4] =
{
    0xDD, 0xC0, // ffree
    0xDD, 0xC0  // ffree
};

const BYTE CodeBlock_FFREEP_2BYTE[4] =
{
    0xDF, 0xC0, // ffreep
    0xDF, 0xC0  // ffreep
};

const BYTE CodeBlock_EMMS_2BYTE[4] =
{
    0x0F, 0x77, // emms
    0x0F, 0x77  // emms
};

const BYTE CodeBlock_MOVQ_3BYTE[12] =
{
    0x0F, 0x6F, 0xC0,   // movq mm0, mm0
    0x0F, 0x6F, 0xC0,   // movq mm0, mm0
    0x0F, 0x6F, 0xC0,   // movq mm0, mm0
    0x0F, 0x6F, 0xC0    // movq mm0, mm0
};

const BYTE CodeBlock_POR_3BYTE[12] =
{
    0x0F, 0xEB, 0xC0,   // por mm0, mm0
    0x0F, 0xEB, 0xC0,   // por mm0, mm0
    0x0F, 0xEB, 0xC0,   // por mm0, mm0
    0x0F, 0xEB, 0xC0    // por mm0, mm0
};

const BYTE CodeBlock_PXOR_3BYTE[12] =
{
    0x0F, 0xEF, 0xC0,   // pxor mm0, mm0
    0x0F, 0xEF, 0xC0,   // pxor mm0, mm0
    0x0F, 0xEF, 0xC0,   // pxor mm0, mm0
    0x0F, 0xEF, 0xC0    // pxor mm0, mm0
};

const BYTE CodeBlock_PADDD_3BYTE[12] =
{
    0x0F, 0xFE, 0xC0,   // paddd mm0, mm0
    0x0F, 0xFE, 0xC0,   // paddd mm0, mm0
    0x0F, 0xFE, 0xC0,   // paddd mm0, mm0
    0x0F, 0xFE, 0xC0    // paddd mm0, mm0
};

const BYTE CodeBlock_PSUBD_3BYTE[12] =
{
    0x0F, 0xFA, 0xC0,   // psubd mm0, mm0
    0x0F, 0xFA, 0xC0,   // psubd mm0, mm0
    0x0F, 0xFA, 0xC0,   // psubd mm0, mm0
    0x0F, 0xFA, 0xC0    // psubd mm0, mm0
};

const BYTE CodeBlock_PCMPEQD_3BYTE[12] =
{
    0x0F, 0x76, 0xC0,   // pcmpeqd mm0, mm0
    0x0F, 0x76, 0xC0,   // pcmpeqd mm0, mm0
    0x0F, 0x76, 0xC0,   // pcmpeqd mm0, mm0
    0x0F, 0x76, 0xC0    // pcmpeqd mm0, mm0
};

const BYTE CodeBlock_PUNPCKLDQ_3BYTE[12] =
{
    0x0F, 0x62, 0xC0,   // punpckldq mm0, mm0
    0x0F, 0x62, 0xC0,   // punpckldq mm0, mm0
    0x0F, 0x62, 0xC0,   // punpckldq mm0, mm0
    0x0F, 0x62, 0xC0    // punpckldq mm0, mm0
};

const BYTE CodeBlock_PSLLQ_4BYTE[4] =
{
    0x0F, 0x73, 0xF0, 0x00  // psllq mm0, 0
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -