• 编译原理


    高级语言,如C语言等                          A             .c ,   .cpp

    中级语言,如汇编语言(目标代码)    B               .obj

    低级语言:机器码(可执行文件)        C            .so,     .exe

    A→B 或 A→C                    称为编译

    B→C                                  称为汇编

    高级语言的编译类似语言的翻译一样:词法分析→语法分析→语义分析→中间代码生成→代码优化→目标代码生成→机器语言

    一般来说语义分析和中间代码生成是一起完成的,合起来称为语法制导翻译。

    编译过程中就可以确定需要存储空间大小的称为静态内存分配,执行时才能确定存储空间大小的称为动态内存分配。

    静态动态分别对应的是编译过程执行过程,动态内存部分又分为栈,堆。

    全局变量显然是静态存储空间。类和方法对应的存储是按整个过程分配的,称为动态记录。

    语言可分为两种:一种是方法中可以嵌套方法的,如pascal;另一种则是不可以的,如C。

    预处理过程:包括宏替换和注释、空格等的删除。

    符号表:用来对应各种操作的操作符。寄存器,cpu附近最快的存储空间,很小,独立于内存之外。

    因此选择将哪些操作变量放到寄存器中就很重要了。

  • 相关阅读:
    JUC原子类 1
    线程优先级和守护线程
    多线程中断
    关于html5不支持frameset的解决方法
    shell中$0,$?,$!等的特殊用法
    Linux GCC常用命令
    C/C++中extern关键字详解
    js实现iframe自适应高度
    java线程安全总结
    Linux平台Java调用so库-JNI使用例子
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725245.html
Copyright © 2020-2023  润新知