每个C指令有多少个asm指令?

前端之家收集整理的这篇文章主要介绍了每个C指令有多少个asm指令?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我意识到这个问题是不可能绝对回答的,但我只是在球场数字之后:

给定一个合理规模的C程序(数千行代码),平均来说,将生成多少ASM指令.换句话说,什么是现实的C-to-ASM指令比率?随意做出假设,例如“使用当前x86架构”.

我尝试过Google,但我找不到任何东西.

附录:注意到这个问题带来了多少混乱,我觉得需要一个解释:我想知道的这个答案是实际上知道“3GHz”是什么意思.我完全知道,Herz的吞吐量根据架构,硬件,高速缓存,总线速度和月球位置而有很大的不同.

我不是在一个精确和科学的答案之后,而是一个经验答案,可以被置于可比较的范围.

这不是一个微不足道的答案(当我注意到),这是我最大的努力.我知道每行C的ASM结果行数量取决于你在做什么.我不在sqrt(23.1)的同一个社区 – 我知道这一点.另外,无论我从C中得到什么ASM,ASM被解释成处理器内的各种微码集,这又取决于你是运行AMD,Intel还是其他的,以及它们各自的代码.我也知道这一点.

球场答案我已经到目前为止我已经做了以下工作:一个足够大的项目,平均每一行ANSI-C大约2行x86 ASM.今天的处理器可能会在每个时钟周期平均约一个ASM命令,一旦管道被填满,并给出一个足够大的样本.

解决方法

我不知道你的意思是“C指令”,也许是声明或行?当然这会因为很多因素而有所不同,但是在查看了我自己的几个示例程序之后,其中很多都接近2-1标记(每个LOC有两个装配说明),我不知道这是什么意味着或如何有用.

您可以通过要求编译器仅生成程序集(例如gcc -S)或通过在已编译的可执行文件上使用反汇编器(但需要源代码进行比较才可以)了解出任何特定的程序和实现组合无论如何).

编辑

根据您对您要完成的内容的澄清(了解现代处理器可以在一秒钟内执行多少行代码)进行扩展:

而现代处理器可能以每秒30亿个周期的速度运行,并不意味着它可以每秒执行30亿条指令.这里有一些需要考虑的事情:

>许多指令执行多个周期(分割或浮点运算可能需要数十个周期才能执行).
大多数程序花费绝大多数时间等待内存访问,磁盘访问等等.
>包括操作系统开销(调度,系统调用等)在内的许多其他因素也是限制因素.

但总的来说,处理器速度非常快,可以在短时间内完成惊人的事情.

猜你在找的C&C++相关文章