zoukankan      html  css  js  c++  java
  • 一条高级语言等于多少行汇编代码?

    高级语言编写的软件的执行过程是,高级语言代码转换成汇编代码,汇编代码转换成机器语言。

    这是最老最老的C编译器才这么做的,现在的编译器大多可以直接产生本机代码,无需先产生汇编了。

    机器代码也没有“行”的概念。

    举一个例子,printf("hello world ");
    这条语句,就会转换成2条机器指令
    push "hello world" ;编译器将hello world放入数据区,这里传地址
    call printf
    但是printf这个函数本身,却又是靠几百条乃至更多的指令实现的,而它又调用了更下层的指令。

    所以用高级语言编写几条代码,就可以实现一个完整的程序,对应的机器指令不计其数。

    另一方面,高级语言也有一行代码什么机器代码也不对应的情况。

    比如注释、空行、描述性的语句、声明性的语句、预处理语句以及被优化掉的代码。比如说常量的计算,空循环,无法到达的代码等等。

    可多可少,没有定论。取决于什么功能的代码,还得看由什么编译器编译。我印象中曾经看过一篇文章里面提到intel有一个统计数千软件中的指令使用情况,但是我不记得具体数字了。

    虽然一般情况下,一条高级语言代码会编译成多条机器指令,几条到几十条不等,但也有高级语言的实现能力不如汇编的情况,象bsr、bsf、popcnt这类指令,用高级语言实现得写一大段程序。

    还有CRC32指令

  • 相关阅读:
    java要注意的问题1
    广义表(线性表的推广)
    java基本类型和包装器类
    面试题10:斐波那契数列
    面试题9:用两个栈实现队列
    面试题8:二叉树的下一个结点
    10 分组数据
    9 汇总数据
    8 使用数据处理函数
    7 创建计算字段
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3292723.html
Copyright © 2011-2022 走看看