代码之家  ›  专栏  ›  技术社区  ›  John Leidegren

今天生成x86程序集的编译器的状态是什么?

  •  1
  • John Leidegren  · 技术社区  · 14 年前

    每当我与使用实时执行的人交谈时,他们往往会指出生成的x86汇编指令并没有那么有效。

    我想问一下,像VMX之类的东西,商业C++编译器会如何利用这些指令集呢?我有种感觉,编译器供应商不会发出特殊的花哨的程序集,也不会把精力放在更新其他编译器上。

    对于这一点,首先什么构成了好的x86程序集?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Marcelo Cantos    14 年前

    你说的那些家伙一定是表演迷。大多数现代编译器将生成非常有效的代码,利用分支预测和管道暂停表以及一系列优化技术。他们通常会发出比所有人都好的代码,除了最聪明的程序员可以匹配。有一些奇怪的例外情况,这就是为什么让asm和intrinsic待命是件好事,但是这些被证明是必要的(和有用的)情况在这些天之间是很少的。

        2
  •  1
  •   sharptooth    14 年前

    “良好的汇编”意味着编译后的程序可以优化地利用资源。明智的做法是“以清晰的方式编写代码,让编译器进行优化”。对于这种拥有真正编译器的智慧来说,很大程度上可以生成非常快的代码。

    从我的经验来看,VisualC++经常会产生复杂的C++构造的惊人的CONCE代码,所以编译器厂商不关心代码发信的想法不是这样的。