📄 decode.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 + -