小编din*_*ino的帖子

x86汇编中'_emit 0Fh,_emit 31h'的含义是什么?

我想检查我的代码的CPU周期.

我想用'tsc'.

在这种情况下,许多tsc代码包含'_emit 0Fh,_emit 31h'.

这些的确切含义是什么?

这是代码.

#include <stdio.h>  
#include <windows.h>  

union int32to64
{

    __int64 i64;

    int i32[2];
};

void read_tsc(int *cl_Low, int *cl_High)
{

    __asm {
        _emit 0Fh
        _emit 31h
        mov ecx, dword ptr cl_Low // cl_Low -> ecx into 32bit
        mov[ecx], eax
        mov ecx, dword ptr cl_High
        mov[ecx], edx
    }
};

int main(void)
{
    union int32to64 a, b;
    __int64 mhz = 0;

    read_tsc(&a.i32[0], &a.i32[1]);
    Sleep(1000);
    read_tsc(&b.i32[0], &b.i32[1]);

    mhz = b.i64 - a.i64;

    printf("clock : %I64dMHz", mhz / 1000000); …
Run Code Online (Sandbox Code Playgroud)

c x86 assembly inline-assembly

2
推荐指数
1
解决办法
252
查看次数

标签 统计

assembly ×1

c ×1

inline-assembly ×1

x86 ×1