我读过这,说过
例如,主要用C编写的程序通常包含以汇编语言编写的部分,以优化处理器效率。
我从未见过主要用C编写的程序也包含汇编代码,至少没有直接作为源代码。只是,他们的例子与Linux内核。
这句话是真的吗?如果是的话,它如何才能优化处理器的效率?
编译器不是刚刚将C代码转换成程序集代码吗?
发布于 2017-09-29 22:12:41
不这不是真的。我估计只有不到1%的C程序员知道如何在汇编中编程,而且很少需要使用它。通常只需要非常特殊的应用程序,例如OS内核的某些部分或编程嵌入式系统,因为它们需要执行没有相应C代码的机器操作(例如直接操作CPU寄存器)。在早期,一些程序员会将其用于性能关键的代码部分,但编译器优化已经显著改善,CPU变得更快,因此现在很少需要这样做。它仍然可以在内置库中使用,因此像strcpy()这样的函数将尽可能快。但是,应用程序程序员几乎从来不需要诉诸于组装。
发布于 2017-09-29 22:37:26
编译器不是刚刚将C代码转换成程序集代码吗?
是的但是..。
在某些情况下,您可能希望访问特定的寄存器或其他特定于平台的位置,而标准C并不提供这样做的好方法。如果您想直接查看状态字或加载/读取数据寄存器,则通常需要降到汇编程序级别。
而且,即使在这个非常聪明的优化编译器的时代,人类组装程序员仍有可能编写出比编译器生成的代码更好的汇编代码。如果您需要将每一个可能的循环从代码中抽出,您可能需要对一些例程进行“手动操作”。
https://stackoverflow.com/questions/46497447
复制相似问题