社区
汇编语言
帖子详情
运行时指令集检测
天下第一好大人
2013-07-10 10:23:32
如果给用户发布的是可执行文件,运行时检测用户的硬件和操作系统支持哪些指令集,从而决定该执行那个函数。
例如,有两个版本,同功能的函数
func
func_sse // 如果用户机器支持就用这个
那应该怎么实施?
1 设置全局函数指针,启动时先检测,然后将这些函数指针赋值,其它功能代码都调用这些函数指针。
2 做两个dll,里面都有同名函数,启动时检测,然后决定加载哪个dll,但是这需要手写加载库的代码。
3 还有更好的方法吗?
...全文
362
4
打赏
收藏
运行时指令集检测
如果给用户发布的是可执行文件,运行时检测用户的硬件和操作系统支持哪些指令集,从而决定该执行那个函数。 例如,有两个版本,同功能的函数 func func_sse // 如果用户机器支持就用这个 那应该怎么实施? 1 设置全局函数指针,启动时先检测,然后将这些函数指针赋值,其它功能代码都调用这些函数指针。 2 做两个dll,里面都有同名函数,启动时检测,然后决定加载哪个dll,但是这需要手写加载库的代码。 3 还有更好的方法吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
WJN92
2013-07-14
打赏
举报
回复
生成多个可执行文件,再写多一个调用程序。 这个方法效率应该最高
www_adintr_com
2013-07-12
打赏
举报
回复
用函数指针就很好了. 只是管理一下, 不要出现太多的全局变量指针, 弄的太乱就行. 要更好的话, 就只能是初始化的时候修改代码段, 把调用这些函数的 call 指令都改一遍. 改成 call 不同的地址. 就像重定位那样做.
金丝龙麟闪电劈
2013-07-11
打赏
举报
回复
难道要用到工厂模式,针对不同的指令集,生成不同的实例?
天下第一好大人
2013-07-10
打赏
举报
回复
找到一个答案: 1 每次调用函数都检测,需要每个功能函数都写分支,最不可取。 2 第一次调用任何一个函数时处理,也是函数指针的方法,最开始所有的功能函数指针指向一个检测器函数,这样无论调用哪个功能都会首先进入检测器,在检测器内部将所有函数指针指向正确的版本。 3 初始化时处理,也是函数指针,程序启动时会首先运行这个初始化检测器,然后再执行正常流程。 4 启动时决定加载哪个dll 5 最新的操作系统有支持procedure linkage table (PLT)功能的,就是执行时链接。 6 弄个安装包,安装时决定copy哪个dll到用户路径。 7 生成多个可执行文件,由用户决定执行哪个。
Mars4_5.zip
MIPS Assembler and Runtime Simulator(MIPS汇编程序和
运行时
模拟器)
CPU
指令集
科普:CISC
指令集
和RISC
指令集
参考资料: 国产CPU,
指令集
之殇 ARM 和 x86 有什么区别? ARM 处理器:RISC与CISC 是什么? 0. 基础知识 0.1 什么是
指令集
所谓
指令集
,是CPU中用来计算和控制计算机系统的一套指令的集合。指令的强弱是CPU的重要指标,
指令集
是提高微处理器效率的最有效工具之一。 CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。与其他硬件电路相配合,决定的是这一款CPU的生态系统。因此,
指令集
搭建的是一个桥梁,是软硬件之间沟通的桥梁,简单来说,软件通
优化:
检测
是否支持 SSE2
指令集
的测试程序
在编写程序时,优化代码以提高性能是一个重要的考虑因素。如果支持,我们可以在该条件分支中编写使用 SSE2
指令集
的代码。否则,我们可以在另一个条件分支中处理 SSE2
指令集
不被支持的情况。在本例中,我们传递了字符串 “sse2” 作为参数来检查 SSE2
指令集
的支持情况。这是一个简单的示例程序,用于
检测
SSE2
指令集
的支持情况。根据实际需求,您可以在条件分支中编写更复杂的代码,以充分利用 SSE2
指令集
提供的优化能力。通过运行上述代码,我们可以在控制台输出中查看 SSE2
指令集
的支持情况。
RISC-V RV32I
指令集
汇总 及蜂鸟E203
指令集
测试riscv-tests
RISC-V RV32I
指令集
汇总 及蜂鸟E203
指令集
测试riscv-testsRV32I
指令集
概述及详细指令蜂鸟E203
指令集
ISA测试riscv-testsriscv-tests是什么iverilog+gtwave测试VCS+verdi RV32I
指令集
概述及详细指令 参考链接 https://zhuanlan.zhihu.com/p/252397877 https://blog.csdn.net/limanjihe/article/details/122395354 https://blog.c
SIMD补充
指令集
架构类型
指令集
介绍
文章目录SIMD
指令集
架构类型CISC的产生、发展和现状RISC的产生、发展和现状IA-64(EPIC)产生、发展和现状RISC与 IA-64(EPIC)相比
指令集
介绍一、X86**二、X64****三、ARM**四、SSE
指令集
五、SSE2
指令集
六、SSE3
指令集
七、SSE4
指令集
八、3D Now!扩展
指令集
九、EM64T
指令集
十、RISC
指令集
十一、3DNow!+
指令集
十二、AVX
指令集
Intel指令手册地址:https://software.intel.com/sites/landingpage/In
汇编语言
21,496
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章