加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:51:11 所属栏目:百科 来源:网络整理
导读:我意识到这个问题是不可能绝对回答的,但我只是在球场数字之后: 给定一个合理规模的C程序(数千行代码),平均来说,将生成多少ASM指令.换句话说,什么是现实的C-to-ASM指令比率?随意做出假设,例如“使用当前x86架构”. 我尝试过Google,但我找不到任何东西. 附录
我意识到这个问题是不可能绝对回答的,但我只是在球场数字之后:

给定一个合理规模的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亿条指令.这里有一些需要考虑的事情:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读