你是如何“下降到大会”的?

时间:2010-12-14 23:27:47

标签: c++ objective-c optimization assembly

有时当我正在读东西时,通常是在C ++ / Ojective-C中,我看到有人说为了提高速度(等等),如果有必要的话,你作为程序员可以下载到Assembly。你是怎么做到的?你写一些汇编并编译它,然后......?你如何将两者联系在一起?链接时是否必须将对象链接在一起?有人可以提供一个例子,可能是一个简单的C ++ hello app调用的主要功能,比如用Assembly编写的函数吗?

感谢。

3 个答案:

答案 0 :(得分:7)

它因编译器而异,但在Visual C ++中:

__asm
{
    int 3;
}

触发调试中断。 __asm块中包含的所有内容都是汇编程序。

答案 1 :(得分:3)

据我所知,大多数编译器都允许使用内联汇编程序。一些汇编程序生成的目标文件与相关C ++编译器生成的目标文件兼容,然后它可以与它的链接器链接。

然而,通常情况下,内联汇编程序会降低速度,而不会提高速度。这是因为编译器没有关于汇编程序块中发生的事情的优化信息,并且现代编译器通常产生比人手编写的更快的汇编程序。大多数汇编语言功能都可以通过直接语言功能或内在函数(如Visual Studio中的Interlocked内在函数)在C ++中使用。

答案 2 :(得分:2)

int main(int argc, char * argv[]) {
  printf("Hello, world!\n");
  asm { trap };
  return 0;
}