当前位置: 首页 > 知识库问答 >
问题:

CPUID的Intrinsics喜欢信息?

充煌
2023-03-14

考虑到我是用C编写代码的,如果可能的话,我想使用类似于Intrinsics的解决方案来读取有关硬件的有用信息,我的关注点/注意事项是:

  • 我不太了解汇编,仅仅获得这种信息将是一项相当大的投资(尽管它看起来像CPU,但它只是关于翻转值和读取寄存器。)
  • asm至少有2种流行的语法(Intel和AT

我必须回答的最后一个问题是:如何用内在函数做类似的事情?因为除了CPUID操作码之外,我还没有找到任何东西来获得这种信息。

共有3个答案

郎雅昶
2023-03-14

这样的内部函数通常也是编译器专用的。

MS VC有一个__cpuid(和一个__cpuidex)来生成CPUID操作码。

至少据我所知,gcc /g并没有提供与此等效的。内联程序集似乎是唯一可用的选项。

东明德
2023-03-14

gcc包括一个cpuid接口:

http://gcc.gnu.org/git/?p=gcc.git;a=blob; f=gcc/config/i386/cpuid. h

这些似乎没有被很好地记录,但是可以在这里找到示例用法:

http://gcc.gnu.org/git/?p=gcc.git;a=blob_plain;f=gcc/config/i386/driver-i386. c

请注意,当ecx的初始值很重要时,例如使用avx/avx2检测时,必须使用<code>__cpuid_count()。

正如user2485710所指出的,gcc可以为您完成所有cpu功能检测工作。从 gcc 4.8.1 开始,__builtin_cpu_supports() 支持的完整功能列表是:cmov、mmx、popcnt、sse、sse2、sse3、ssse3、sse4.1、sse4.2、avx 和 avx2。

仰经武
2023-03-14

经过一些挖掘,我发现了一个有用的特定于gcc的内置函数。

唯一的问题是这种功能非常有限(基本上只有两个功能,一个用于CPU“名称”,一个用于寄存器组)

一个例子是

#include <stdio.h>

int main()
{
    if (__builtin_cpu_supports("mmx")) {
        printf("\nI got MMX !\n");
    } else
        printf("\nWhat ? MMX ? What is that ?\n");
    return (0);
}

显然,这个内置函数也可以在Ming w-w64下工作。

 类似资料:
  • 问题内容: 是否可以在一个查询中将多个SQL LIKE通配符串在一起-像这样? 目的是查找同时包含通配符但没有特定顺序的记录。 问题答案: 正确的SQL语法是:

  • 喜欢资讯 取消喜欢资讯 资讯喜欢列表 喜欢资讯 POST /news/{news}/likes Response Headers Status: 201 Created 取消喜欢资讯 DELETE /news/{news}/likes Response Headers Status: 204 No Content 资讯喜欢列表 GET /news/{news}/likes Respons

  • 点喜欢 取消喜欢 喜欢的人列表 点喜欢 POST /feeds/:feed/like Response Status: 201 Created { "message": [ "操作成功" ] } 通知类型 { "channel": "feed:digg", // 通知关键字 "target": 325, // 动态id "content": "@2222 点喜欢了

  • 本文向大家介绍说说微信上你最喜欢的功能,以及为什么喜欢。相关面试题,主要包含被问及说说微信上你最喜欢的功能,以及为什么喜欢。时的应答技巧和注意事项,需要的朋友参考一下 喜欢: 1.小程序---节省了好多额外APP下载,大有“微信在手天下我有”的畅***;微信页下滑或搜索就可以很便捷地找到小程序的入口;与好友之间的分享也很方便。 2.订阅公众号---方便了解阅读各种感兴趣的信息与资讯;便于打发利用碎

  • GET /user/likes Parameters 名称 类型 描述 limit Integer 获取条数,默认 20 after Integer 获取之后数据,默认 0 Response Status: 20 OK [ { "id": 2, // 点赞标识 "user_id": 1, // 点赞用户 "target_user": 1, // 接收用户(你能收到就

  • 问题内容: 我当前的查询如下所示: 我环顾四周,找不到类似于LIKE IN()的东西-我认为它的工作方式如下: 有任何想法吗?我只是以错误的方式思考问题-一些我从未见过的晦涩命令。 MySQL 5.0.77-社区日志 问题答案: 一个REGEXP 可能 会更有效,但你必须对它进行基准测试,以确保,如