前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C/C++ 宏获取当前编译程序工作的CPU指令集平台(综合大全覆盖各类CPU)

C/C++ 宏获取当前编译程序工作的CPU指令集平台(综合大全覆盖各类CPU)

作者头像
xcywt
发布于 2023-07-24 08:36:29
发布于 2023-07-24 08:36:29
34300
代码可运行
举报
文章被收录于专栏:xcywtxcywt
运行总次数:0
代码可运行

参考:https://blog.csdn.net/liulilittle/article/details/126644547?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-126644547-blog-43935465.235%5Ev38%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-126644547-blog-43935465.235%5Ev38%5Epc_relevant_default_base3&utm_relevant_index=11

 可以参考下方连接头文件内的部分代码

Platform.h (apple.com)

GetCipherSuites 函数获取当前缺省SSL/TLS加密算法列表6

ARM64以前跑 chacha20,ARM32的CPU速度快。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    const char* GetCipherSuites() noexcept {
#if !(defined(__aarch64__) || defined(_M_ARM64))
        if (strstr(GetPlatformCode(), "ARM")) {
            return "TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384";
        }
#endif
        return "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256";
    }

GetPlatformCode 函数获取当前CPU指令集平台

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    const char* GetPlatformCode() noexcept {
#if defined(__x86_64__) || defined(_M_X64)
        return "x86_64";
#elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86)
        return "x86_32";
#elif defined(__ARM_ARCH_2__)
        return "ARM2";
#elif defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__)
        return "ARM3";
#elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T)
        return "ARM4T";
#elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_)
        return "ARM5"
#elif defined(__ARM_ARCH_6T2_) || defined(__ARM_ARCH_6T2_)
        return "ARM6T2";
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
        return "ARM6";
#elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
        return "ARM7";
#elif defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
        return "ARM7A";
#elif defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
        return "ARM7R";
#elif defined(__ARM_ARCH_7M__)
        return "ARM7M";
#elif defined(__ARM_ARCH_7S__)
        return "ARM7S";
#elif defined(__aarch64__) || defined(_M_ARM64)
        return "ARM64";
#elif defined(mips) || defined(__mips__) || defined(__mips)
        return "MIPS";
#elif defined(__sh__)
        return "SUPERH";
#elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC)
        return "POWERPC";
#elif defined(__PPC64__) || defined(__ppc64__) || defined(_ARCH_PPC64)
        return "POWERPC64";
#elif defined(__sparc__) || defined(__sparc)
        return "SPARC";
#elif defined(__m68k__)
        return "M68K";
#elif defined(__s390x__)
        return "S390X";
#else
        return "UNKNOWN";
#endif
    }

实测有用:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
GCC 为龙芯 CPU的预定义宏
GCC 会为不同 CPU 架构预定义宏,如 __x86_64__ 代表Intel 64位CPU, __aarch64__代表 ARM64。 网上已经有文档对 GCC 为 CPU 的预定义宏进行了总结。
mazhen
2023/11/24
5880
【C 语言】CPU 架构 ( CPU 指令集类型 | CPU 指令类型 | CPU 架构 )
RISC : Reduced Instruction Set Computers , 精简指令集 , 手机使用的 ARM 芯片 ( 高通 ) 就是精简指令集 , Android 是基于 ARM 架构的操作系统 ;
韩曙亮
2023/03/29
2.1K0
【FFmpeg】编译不同平台的 FFmpeg 源码 ( 本地编译 与 交叉编译 | FFmpeg 指定目标平台的编译配置参数 | 配置目标 CPU 架构 | 配置目标操作系统 )
" 本地编译 " 指的是 在 目标系统 上进行编译的过程 , 生成的 可执行文件 和 函数库 只能在 目标系统 中使用 ;
韩曙亮
2024/05/24
1.6K0
elf文件解析器_elf文件下载
前两天网上投递了简历,面试了一家C++公司,然后对面负责人给我发了一份笔试题,题目是:
全栈程序员站长
2022/11/16
1.7K0
M1 Mac上更好的 Golang 使用方案
本篇文章,将分享如何在苹果 M1 Mac 设备上,来进行高效、可靠的 Golang 开发环境的安装和管理。
soulteary
2022/05/12
1.3K0
M1 Mac上更好的 Golang 使用方案
第1阶段——uboot分析之启动函数bootm命令 (9)
本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0" 中怎么实现bootm命令启动内核.
诺谦
2018/01/03
1.2K0
第1阶段——uboot分析之启动函数bootm命令 (9)
【计算机硬件常识】CPU 架构与指令集
存储器: ROM(只读),Flash(NOR, NAND),RAM(随机存取存储器)
sofu456
2020/07/30
1.2K0
Android Native Crash 收集
本文是『张涛的NDK之旅』,本来很早以前就有很多读者希望我能写一些关于MDK的文章,但是由于我本身对NDK不熟悉,所以找来了同事张涛的文章。欢迎大家关注他的博客——开源实验室(点击原文链接可以直接访问)
用户1907613
2018/09/30
2.3K0
Android Native Crash 收集
Golang - 从源码到二进制:探索在国产CPU架构上交叉编译Minio的方法
交叉编译是指在一台主机上为另一种不同架构或操作系统的目标平台生成可执行程序或库。在C++中,交叉编译通常用于在开发机器上编译目标平台的程序,例如在使用x86架构的开发机器上编译ARM架构的程序。
小小工匠
2024/05/26
9160
Golang - 从源码到二进制:探索在国产CPU架构上交叉编译Minio的方法
Uboot 大全 | uboot 启动流程(一)
atf基本启动流程为:BL1 – BL2 – BL31 – BL32 – BL33(uboot),即在bl32启动完成后再启动uboot,uboot作为启动链中作为最后一级镜像,用于启动最终的os。Atf是arm为了增强系统安全性引入,只支持armv7和armv8架构的可信固件。而uboot是通用的嵌入式系统引导程序,其可以支持包含arm在内的多种处理器架构,如mips、riscv、powerpc以及x86等,且其历史比atf更加久远。因此默认情况下uboot并不需要与atf共同启动,而其自身就被设计为支持完整的多级启动链,该启动链被设计为最多可包含spl、tpl和uboot三个阶段。接下来我们通过一些典型启动流程,来看下这些阶段的一些组合关系吧。
刘盼
2023/01/05
5K1
Uboot 大全 | uboot 启动流程(一)
conan入门(三):上传预编译的库(artifact)
我们经常需要从现有二进制文件创建包,比如第三方或供应商提供的C/C++库(只有include和lib),或在引入conan管理包之前手工编译编译好C/C++库。在这种情况下,我们并不需要conan从源代码编译,费时费事或根本不可能。所以以下情况我们可以考虑直接将本地已经编译好的二进制文件生成conan包:
10km
2022/04/13
3.2K0
conan入门(三):上传预编译的库(artifact)
mold源码阅读 其零 main
我们从main函数的开始,大致讲一下都做了哪些事情。之后再从每个流程中的具体实现开始阅读(如果我记得的话会回头在这里补上对应的链接),或者会以解决某些问题为线索写一篇,比如说某一些常见的参数具体在mold中怎么生效的,比如说whole_archive这种。为保证两部分文章内容的连贯性,内容不可避免会有一定重叠。
AkemiHomura
2023/04/07
4690
mold源码阅读 其零 main
交叉编译学习笔记(二)——交叉编译器的命名规则
该文介绍了交叉编译工具链的使用,包括arm-linux-gnueabi-gcc、arm-linux-gnueabihf-gcc、arm-none-eabi-gcc、arm-none-linux-gnueabi-gcc、arm-none-linux-gnueabihf-gcc、qoriq-elf-gcc等工具的使用方法。
剑影啸清寒
2018/01/02
5K0
申威(神/声)(SW)1621 + UOS 20 编译安装 Docker | 容器国产化适配
1.解压 runc 源码至 ~/go/src/github.com/opencontainers 目录;
宋天伦
2023/10/20
1.6K0
【AI系统】CPU 指令集架构
我们知道,计算机指令是指挥机器工作的指示和命令,程序就是一系列指令按照顺序排列的集合,执行程序的过程就是计算机的工作过程。从微观上看,我们输入指令的时候,计算机会将指令转换成二进制码存储在存储单元里面,然后在即将执行的时候拿出来。那么计算机是怎么知道我们输入的是什么指令,指令要怎么执行呢?
用户11307734
2024/11/26
2740
深入iOS系统底层之指令集介绍
说到指令集以及CPU架构体系,大家就会想到计算机专业课程里面的计算机体系结构的方面的内容。既然课程中已经有了的内容我就不想那么枯燥的去复述一遍,而是先看一个类的定义:
欧阳大哥2013
2018/08/22
1.1K0
深入iOS系统底层之指令集介绍
LuaJit交叉编译移植到ARM Linux
这里选择LuaJit在嵌入式Linux系统使用,LuaJit交叉编译也比较简单,没有第三方库的依赖,直接交叉编译源码即可。
fensnote
2023/10/22
1K0
LuaJit交叉编译移植到ARM Linux
手动编译Parboil
这里是使用Parboil自带的脚本编译和使用的教程:https://blog.csdn.net/FishSeeker/article/details/79479714
用户1148523
2019/05/26
7580
ROPgadget:一款可以在二进制文件中搜索Gadget的强大工具
ROPgadget是一款可以在二进制文件中搜索Gadget的强大工具,本质上来说,ROPgadget 是一个小工具查找程序和自动操作程序。在该工具的帮助下,广大研究人员可以在二进制文件中搜索Gadget,以方便我们实现对 ROP 的利用。ROPgadget 支持 x86,x64,ARM,PowerPC,SPARC 和 MIPS 体系结构,并支持 ELF / PE / Mach-O 格式。
FB客服
2023/08/08
3.3K0
ROPgadget:一款可以在二进制文件中搜索Gadget的强大工具
secure boot (一)FIT Image
secure boot 和FIT Image是前段时间接触到的,其实早就该总结下了,奈何懒癌犯了,拖了好久才写出来。
嵌入式与Linux那些事
2022/12/01
2.1K0
secure boot (一)FIT Image
推荐阅读
相关推荐
GCC 为龙芯 CPU的预定义宏
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验