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

gcc的__builtin_cpu_supports是否检查操作系统支持?

阴雪风
2023-03-14

GCC编译器提供了一组内置函数来测试某些处理器特性,如某些指令集的可用性。但是,根据这个线程,我们也可能知道某些cpu功能可能不会被OS启用。所以问题是:<code>__builtin_cpu_supports</code>intrinsic是否也检查操作系统是否启用了某些处理器功能?

共有1个答案

云长恨
2023-03-14

不。

我在我的Skylake系统上禁用了AVX,方法是将noxsav添加到Linux内核启动选项中。当我做cat /proc/cpuinfoAVX(和AVX2)不再出现,当我使用AVX指令运行代码时,它会崩溃。这告诉我AVX已被操作系统禁用。

但是,当我编译并运行以下代码时

#include <stdio.h>

int main(void) {
  __builtin_cpu_init();
  printf("%d\n", __builtin_cpu_supports ("sse"));
  printf("%d\n", __builtin_cpu_supports ("avx"));
}

它返回8和512。这意味着< code > _ _ builtin _ CPU _ supports 不会检查AVX是否被操作系统禁用。

 类似资料:
  • 在绝大多数现代的Unix类操作系统(例如Linux、BSD等)上,只需要一个C++编译器就可以编译并运行Sphinx/Coreseek,而不需要对源码进行任何改动。 目前,Sphinx/Coreseek可以在以下系统上运行: Linux 2.4.x, 2.6.x (包括各种发行版,如Redhat、Centos、Debian、OpenSuse等) Windows 2000, 2003, XP, Vi

  • 问题内容: 我要检查操作系统(在运行脚本的计算机上)。 我知道我可以在Linux 中使用它,但是它在控制台中给了我一条消息,我想写一个变量。 如果脚本可以告诉您它是Mac,Windows还是Linux,那就可以了。我该如何检查? 问题答案: 您可以使用: 具有比更好的粒度。 有关有效值,请参阅文档。

  • 但是它太复杂了,无法从Java代码中完成,我认为这不是我应该使用的方向。 提前谢了。

  • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成

  • 问题内容: 我已经做了一些研究,但这个问题已经提出,但不是我打算的那样。我正在为QR登陆的客户端构建页面,这是一个下载应用程序的地方。因此,他不必在页面上打印2个QR码,我想检测当前的操作系统(Apple / Android / Other [不支持])并根据该值修改我的元素。 我已经看过脚本“ detectmobilebrowsers”,它的目的只是告诉用户是否完全可以移动,而我想弄清楚用户正在

  • Linux 也是众多操作系统之一,要想知道 Linux 是什么,首先得说一说什么是操作系统。 计算机是一台机器,它按照用户的要求接收信息、存储数据、处理数据,然后再将处理结果输出(文字、图片、音频、视频等)。计算机由硬件和软件组成: 硬件是计算机赖以工作的实体,包括显示器、键盘、鼠标、硬盘、CPU、主板等; 软件会按照用户的要求协调整台计算机的工作,比如 Windows、Linux、Mac OS、