HNU_Compiler Principles_2
程序语言基础
6.1程序结构:
程序由变量和函数组成,由文件构成;
文件由句子构成,
句子分为定义和操作语句,连续同级句子构成一个块
块可以嵌套,树形结构,
变量先定义后使用,作用域:单向大盖小,冲突时就近优先
6.2数据与存储地址
程序有变量和常量
变量包含数据变量,函数变量(地址变量)
变量有值与存储地址两个概念
变量的值存放在存储器中,有一个存储地址
变量的值可以是地址
访问值有变量名和存储地址两条途径
间接访问机制:间接寻址,通过一个数据访问另一个数据。
应用:函数调用中参数传递;跨模块函数调用;跨模块的数据访问;面向对象中多态的实现;
别名:函数调用,如果传递参数地址,那么别名就还扩展到了被调函数中
6.3函数调用中的参数传递
简单数据类型传递的是值
对于数组,结构体对象,类对象,传递的是地址
原因:空间量答,如果传值,需要拷贝数据,存储资源耗费大,时间开销大。
6.4宏扩展和预处理的含义
#define a 100
则a=10不允许出现,是错误的。
含义:在预处理环节进行文本替换。预处理是在编译之前执行。
7.编译技术的演进
第一代:源程序-》目标机器的二进制可执行文件(机器指令)
第二代:源程序-》通用的中间代码-》虚拟机解释。 java语言(通用指令和函数)
第三代:源程序的实时编译和实时解释。Js,Python(层次化的功能函数)
本质:借鉴生物构成特性:细胞-》组织-》器官-》生物体
程序:指令->函数-》模块-》包-》应用程序
小结2
机器语言的特点:操作指令流,程序繁细很长,无直观