软考备战(2)语言处理程序基础

2024-05-25 16:18

本文主要是介绍软考备战(2)语言处理程序基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     在阅读和学习软件设计师教程的过程中,学习到了程序语言基础这块的内容.这一章总共就两节,一共40多页,其中语言处理程序基础这小节就占了30多页,可见本章的主要内容在第二节.但是在我学习的过程中,感到非常的吃力,虽然我在专业课上曾经接触过文法和形式语言的一些东西,但是并没有任何轻松的感觉,相反越看越觉得不对劲,我在想可能是跑偏了,想起师姐曾经特意强调一定要看考纲,于是乎就翻看考纲关于这块知识的考察内容,如下图所示


     看了之后决定以考纲为纲领对这块的知识进行一下总结,一是加深自己的印象和理解,同时也为其他的同学提个醒,免得一头扎进去出不来,时间耗费了许多,也没有达到预期的效果.虽然这些东西十分晦涩难懂,但是也不能不看,但是看哪些,怎么看就是你要考虑的了.我个人的想法是根据考纲的提示去掌握相应的知识点.上图中的I代表理解,II代表一般应用.

     首先我们来了解第一个概念:什么是语言翻译?

     众所周知,计算机的硬件只能识别由01序列构成的机器语言,因此我们使用高级程序语言编写的程序需要翻译成机器语言,计算机才能识别并且执行,这就是所谓的"语言翻译".

     那么这种翻译的工作由谁来承担呢?我们通常称它们为"语言处理程序".语言之间的翻译形式有多种,基本方式为汇编,解释和编译.

     汇编的基本方法是什么?

     汇编语言源程序主要由三类语句构成:分别是指令语句,伪指令语句和宏指令语句.

     所谓汇编就是将使用汇编语言编写的程序翻译成为机器指令程序,以便于机器识别和执行.汇编程序的基本工作主要由两部分:一是将每一条可执行汇编语句转换为对应的机器指令;二是处理源程序中出现的伪指令.

     其基本方式是对源程序进行两次扫描:

     第一次的扫描主要工作是定义符号的值并创建一个符号表ST,ST记录了汇编时所遇到的符号的值.另外还需要对与定义符号值有关的伪指令进行处理.

     第二次扫描的主要任务是产生目标程序.此过程涉及两个方面的工作:一是把机器指令助记符转换成二进制指令操作码;二是求出操作数区各操作数的值(用二进制表示).

     再来看下一个知识点,编译的基本过程及各阶段的基本任务.我用一张表格为大家展示一下:

顺序号

    阶段名称

                                                            基本任务

1

词法分析

对源程序从前到后逐个字符地扫描,从中识别出一个个"单词"符号

2

语法分析

在词法分析完成后,根据语法规则将单词符号序列分解成各类语法单位,如表达式,语句等

3

语义分析

分析语法结构,检查源程序是否包含静态语义错误,进行类型分析和检查

4

中间代码生成

根据语义分析的输出生成中间代码

5

代码优化

对生成的中间代码进行优化,减少时空上的浪费

6

目标代码生成

把中间代码变换成特定机器上的绝对指令代码,可重定位的指令代码或汇编指令代码

     解释的基本过程

     解释程序通常可以分成两部分:

           1分析部分,包括通常的词法分析,语法分析和语义分析程序,经语义分析后把源程序翻译成中间代码,

           2解释部分,用来对第一部分产生的中间代码进行解释执行.

     鉴于篇幅不宜过长,对于考纲中剩余部分的知识点,主要是形式语言与自动机理论的内容,就不在这里一一列出了,大家可以像我一样去书中将这些考点整理出来,然后认真分析,尽量理解,力争能够应用.我在这里想说的是一种学习的方式或者说方法,当我们在遇到非常难懂的理论性较强的学习内容时,当你感到茫然无措不知如何下手的时候,一定要学会抓住主要矛盾,不能一头扎进去出不来,造成学习整体效率的下降,其成果和付出的努力不成正比,同样我们也要学会使用二八定律,以最为经济的代价换取较大的回报.就这块的学习,我们不做理论研究,只求应用.

这篇关于软考备战(2)语言处理程序基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002002

相关文章

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ