C代码不使用sizeof确定CPU的大小

标签 c cpu-architecture

有没有一种方法可以在不使用 sizeOf 运算符的情况下知道 CPU 是 32 位还是 64 位?

可以为此编写任何其他代码吗?

最佳答案

在这个问题中How to determine whether a given Linux is 32 bit or 64 bit?

要检查系统是32位还是64位内核,可以调用

system("getconf LONG_BIT")

并检查它的返回。如果它显示 64,则它是 64 位内核,如果它是 32,则它是 32 位内核。

要检查CPU是否支持64位,可以在文件/proc/cpuinfo中检查它是否有“lm”(长模式)标志

system("grep flags /proc/cpuinfo | grep -c lm")

如果返回为 1,则 lm 标志存在(64 位),如果返回 0,则不存在(32 位)

但这只是Linux。其他选项位于开头链接的问题中。例如,有些包括检查 limits.h

关于C代码不使用sizeof确定CPU的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919234/

相关文章:

c - 全局char[]变量,如何在其他文件中声明它?

c - CPU缓存对速度的影响

security - 引导加载程序/操作系统/设备驱动程序如何与 TPM 交互?

c - cpu 会将 STORE 指令重新排序到同一地址吗?

c - 反转从二进制文件读取的指针

c - <linux/unistd.h> 中的 _syscallN 宏在哪里?

在 X11 事件循环中可以捕获操纵杆/游戏 handle 事件吗?

c - 程序运行,但结果错误......是一个找到矩形三角形缺失边并找到其角度的程序

c++ - 为什么 ret 指令数大于调用指令数?

c - RISCV 32 位基础和 64 位扩展