【问题标题】:How does a program know when to use opcodes in extension instruction sets? [closed]程序如何知道何时在扩展指令集中使用操作码? [关闭]
【发布时间】:2012-07-18 03:10:56
【问题描述】:

我知道在 SSE4 中,添加了一些有利于字符串搜索的指令,特别是 xml 解析。假设我编写了一个利用这些指令的程序,当我将程序移动到另一台具有较旧处理器但没有 SSE4 指令集的计算机时会发生什么?程序会中断吗?

我假设编译器会生成哪些指令作为其优化过程的一部分使用,如果编译器在旧 i386 上运行但软件以 i486 为目标,我会丢失这六个指令吗?

如果这就是它的工作原理,那么我有一些音频制作软件,在我安装它的任何计算机上都可以正常工作,但声称可以利用这些扩展指令。只是运行时检查和不同的代码路径吗?

所有这些对 Java 字节码或 msil 等中间语言有何影响?

【问题讨论】:

  • 有多种方法。有些人生成两个版本并在运行时选择。如果 CPU 不支持指令,其他程序会崩溃。 JIT 语言可以在 JIT 时间选择。
  • 您能描述一下您遇到的实际编程问题吗?
  • 如果性能至关重要,您甚至可能希望实现单个包装函数并在运行时修补其调用目标以选择正确的版本。

标签: compilation opcode instruction-set


【解决方案1】:

你需要做的是:

您为不同的指令集编写不同版本的代码。你不需要重写整个程序,但你必须重写那些特定的区域。然后在程序执行时检查支持的内容并适当地分支。

所以基本上你为没有这个指令集的系统提供了一个替代的代码路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多