粉丝1412获赞1187

哈喽,从这节课开始呢,我们来一起写这个词法分析器啊,词法分析的这个过程呢,其实是将字符流转化成符号流,这里关系到要干点,什么叫流,对吧? 宝贝,你可以理解成说是将一段元代码啊,变成一个咱们分析好的符号,那我还介绍一个问题,什么是符号,对吧?可以, 然后呢,词法分析过程呢?其他这整个的过程呢?它类似我们中学学习的那种词性标注,标注这个词是名词还是动词啊? 然后呢每个符号呢?在咱们词法分析器,他其实都是个元组啊,他包括两个东西,至少会包括两个东西,一个呢是这个词性,他是名词还是动词?还有就是你拆出来的这个具体的这个词组串,比如说打印机啊,这名词嘛,打印机,那这个 这三个字符呢,也要存起来,所以呢他是个原组,原组就是把几样东西组合在一起啊,这么东西你可以列成他这个类型也行。 然后呢,这是一个视力啊,之前个视力咱们已经看过了,比如说 y a 等于一加四乘五,咱们要把它画成一个格子吧, y a 等于一加上四乘五,对吧?而接下来呢,我们会有一个圆组的表,对吧? 每一行呢是一个圆组,比如说腕啊,那我们要知道他是 k 沃的类型,对吧?他不是名词,也不是动词,咱们不是用这种方式来区分,咱们开始用说 是 t, word 还是 word, 对, word 就变亮, tword 就是关键字,关键字就是我们语言提供的本身的一些带有特殊功能的词语,对不对? ok, 比如说 word 就是用来定义变亮的,对吧?然后呢,比如说 ef 就是用来判断的, fow 就是用来循环的,对吧?这是关键字, ok, 然后 a 呢是一个歪瑞博,歪瑞博呢,就是咱们语言的这个变量,我们用 vir 呢,代表这个歪瑞博是需要我自己去推导的。在我们泰尼斯科比赛不一样 是加出来的那个袜,其实他有点像那个加袜的袜啊,就是这个类型的,也是 a 是有类型的,但 a 需要被推倒出来。 等号呢,代表 offit 啊,这个就是一个操作符,对吧?一呢是阴体,这整数啊,加号呢是 offer, 对吧?我们整体有一个磁性的描述的一个表,而这个表里看到每一行呢都有两个元素,这两个元素呢,构成了一个元组, ok, 然后我们来先解释一下,刚才我们说两个概念,一个符号,一个流,对吧?我们来先说这个符号,符号呢,我们又称之为词法单元啊,他是一个元组,对吧?然后呢,他是词法分析器的结, 英文呢是 cocoke, 我们在这个英文里边叫一个符号,叫 to 坑啊,然后呢,他数学上是个元组啊,比如说我们这个一二三,其实是一二三是他本身的这个字符串 和这个殷切着类型,类型,它是一个整数嘛,组成的这样一个圆组,这就是一个符号。这里大家看到的是咱们泰尼斯科比支持的这种符号的类型, k vir 的关键字啊, word 变亮, aprry 的操作符,不是他的括号。 siriend flow 的伏点数。布林布尔, 咱们先尽量少一点啊,来帮助大家去学习这个表演原理,对吧?但很多的这个原理,还有更多的类型,在咱们这里就类型相对少一些, 这节课呢是咱们继续上节课的知识,咱们先实现一点东西,然后是一个符号类型的,每一句关键词的字典, 以及这个磁化分析器整个程序的一个接口啊,然后我们先来加大版本呢,我们选择这个硬开着作为咱们开发工具,然后咱们大体呢会把这个跟磁化分析相关的溅到这个拉克塞里啊,目录先展示,这个是拉克塞,后面我们有其他的, 这里呢,咱们见刚才说的那个符号的类型,什么叫头跟太啊?然后这就是咱们的那个类型了,然后类型呢,咱们大家有 k v 的,然后有这个 very good, 这个应该是 enm 的类型,就是媒体类型,然后会有这个阿普瑞特 braket three, 之后有 flogy 啊和这个布林。 然后呢我们也建一个, 刚才我们说了,咱们核心是要产生一个符号的流量,那我们把这个偷看也定义出来,偷看的话咱们定义成有一个偷坑太坑,这就是他的类型,然后我们还定一个就是偷看的歪了,这其实是个构成了一个原组啊, 然后他有一个构造函数,是吧? 好,我们把这个勾的函数写出来,然后把它该负值的负值啊, 之后呢,嗯,我们建议一个公用方法叫偷喷太平,因为我们有时候要把这个太子返回嘛, 对吧?然后我们再有 oppo red 调这个,因为我们有时候会去展示啊,我们 owrowid 调以下这个突出的方法,因为我们有时候调 是我们要把这个大衣打出来,所以我们用这个瞬间放脉去啊, 其实就是我们把泰普和 y 六都打出来啊,这就是他的那个图讯转化成是这样的。然后接下来我们再定义两个简单的方法啊,一个是一次 w, 这个后面咱们会用到,因为我们经常要判断他到底是不是一个变量,变量的话,那我们就锐称 top, 如果是等于偷看 top 点 very good, 那他就是一个 very good, 对吧? 然后另一个呢,咱们再定一个一斯嘎拉,斯嘎拉呢,代表的是一个直啊,一个直类型,如果是直类型的呢,他应该是偷看太颠,他不应该是 word 吧,应该我们知道他是要么就是阴气卷, 英气质,咱没打上啊,所以我们这应该知道他要么就是英气质,对吧?然后呢? top 的 flog, 然后他是得扣坑太布甸,我们要么可能是个 siri 吗?或者玻璃 啊,这四个,这四个就是直类型,这是咱们最早关于偷看的一个定义啊,当然我们定义类型,我们要定义些方法,对吧? 然后就是咱们要再创建 class like, 这是我们关于整个词法分析器的一个定义啊。喂,这里这样,我们这边不有偷啃,给大家看一下,这样咱们这次做了三个文件啊,是吧?然后我们看下这个拉丝的写法,这个拉丝呢? 这么写咱们定义一个方法呢,叫安德莱斯。 我们先假设他返回的是一个 top 的列表啊,他传入的呢,其实是一个流,但是他返回的是一个 lvx 的 tocon, 之后呢,我们先把它维成闹,这是我们的整体的接口, 我们最终是利用一个 nice, 然后把元代码作为流传进去啊,元代码是一个字符串网,把它作为流传进去,当然也就是说可以读文件直接对接过来,只要他他这个字符流,我这个头跟嗯,就可以分析,是吧?不用说他一定要是数组类型, 我说的一定要把所有的数据都加载到咱们的程序里啊,留的概念后面有一节课会讲,哈喽,然后 gs 咱们选择的是这个威斯扣的作为咱们的边, 然后咱们可以看一下,我们先建一个文件夹,这个文件夹呢咱们叫啊拉克丝,这是咱们司法编辑器的部分。然后这里边呢,咱们建一个文件,跟他一样叫扣跟 patt ts 啊, 建了一张文件这里,我用后跟泰普建一个这样的类型作为咱们整体的方法,因为咱们家村这里刚好是没有媒体类型,然后我们建一个 come on 的,就我们把一个媒体的类型建起来啊,作为一个媒体的类型呢,大家可以看到他应该 对,这是我们垫一个 case, 然后把它一个 pose 出去,对吧?然后这个媒体类型呢,他应该有一个工作的函数啊。 美曲呢,其实有两个,一个是太平,一个是歪柳, 我们这样来剪泰普这个字不串,然后歪六十个整数,我们这样来思考这个眉卷,然后咱们在偷看 top 里呢,就去引用一下这个类型, 然后我们让我们来定义几个,那包括这个 p 窝的, 我们的类型呢,字符串的类型呢,就叫 p 一 word, 然后他的这个 y 六呢就叫,嗯,可以让我们多订几个 red yes, 咱们这个阴铁片,最后咱们 logo 还少了一个 blol 这样子,这个就是歪瑞,不,我们把这个删掉啊,然后就是这里啊,布令,是吧? ok, 然后这就是咱们产生的这样一个头跟太普的美举啊, ok, 咱们再在勒克斯下面呢,跟刚才一样啊,咱们建一个偷坑的类啊,一样的,然后,然后这里呢,他会有一个太, 有一个歪柳,这样其实是个偷啃,是吧?可以,然后他会有这个就就是 get, 我去 top, 然后和这个一次 vivo, 这是 reconz, 选 top 头跟 top 点, vivo 是这个,所以我们这里要把这个头跟 top 一块进, 是这个逻辑啊,然后呢?还有刚才那个一次干了, ok, 是吧?这样咱们就进入了头疼的累, 跟加瓦的有点像啊,但语法又不太一样,因为没有梅曲类型,而大家会问啊,就说为什么我要定一个梅曲类型,对吧?偶尔我不用整 数或者支付串,我们先说一下用整数,用整数的话比较起来很快,对吧?比较整数很快的,但是你最后还得把它转化成支付串,对吧?因为我们有一个特训类啊,有一个特训方法要写, 这里边咱们按照刚才的咱们少儿为他那个 fake, 对吧?和这个歪六的是不是? ok, 然后呢?有人会说,那你就用字符串不就得了吗?这个 top 对吧? 之所以不用字不串,大家明白一个道理,字不串的比较成本是很高的,要把整个字不串都比一遍,所以我用对象啊,我宁愿让他去比对象, 就说进来的太会,本身就是个对象,比对象,比对象比的地址呢?比地址就是比一个内存中的数字,是吧?大家之前听过课了吧?之前咱们写过会编了,对吧?这很简单是不是?所以我这里的目标 是节省性的啊,同时又能满足需求。 ok, 所以这里的话,我们的那太符,就类似点太符的,是吧? 可以看下这个眉纸类型,有个泰普和歪柳,对吧? 然后那个歪六呢?就是瑞斯 点歪六啊,应该是下划线的,我们看一下这里啊,这次点歪六是吧?这样咱们就没问题,比较速度很快,你看这种比较很频繁的,如果你用自助串,他会一个一个字符去比,对吧?如果我用一个对象,他直接一比他地址就行了,而且像这几个对象如果频繁使用的话,他 他是一直在那个 cpu 的 l 一环村里的,这很快,所以说我们会考虑到用一个对象。好,那咱们家的客品呢?还需要一个叫莱克斯的泪啊,这是咱们的主的入口了, 和之前是一样的,需要一个方法叫 angelax, 对吧?然后之前我往里传的是一个俊, ok, 这里简化一下, 我们直接往里传一个伊特瑞城,就传一个米线瑞特的,那就是传一个叠带器进去,然后这里具体叠带器的实线,以后的课咱们会看到啊。

hello, everybody, 今天呢,我们来做一期技术分享,如何用 七百行代码实现一个自制的 c 编译器。嗨,有意思吧,编译器呢,一直是一个我非常感兴趣的话题,但是呢,听起来就非常难,所以我一直没有开始,直到 上个月。不,这个月的一号,七月一号,机缘巧合之下呀,我知道了这么一个项目叫 c 四,其他是一个著名的项目,但我一直都不知道,哼, c 四,他其实用了 五百行代码就实现了一个自举的简易 c 语言。什么叫自举?自举的意思就是它这个 c 四变异器可以变异 c 四变异器的原码,嘿嘿,有点拗口啊,不重要,重要就是他自己可以变异自己 exciting。 所以呢,我一看到这个项目之后,我想只有五百个代码就能够实现一个 简易的 c 语言编辑,听起来不是特别的难吗?不是特别的复杂吗?所以我想我就自己也来实现一个吧。 我给自己定了一个小目标,我用一千行代码来实现一个自举的简易 c 变音器。 ok, 目标定了之后呢,我们就想给变音器取一个非常骚的名字, 由于那一天是七月一号党的一百岁生日,所以我给这个编辑取名 c p c 啊,同时他 它的正式官方名字叫做 c plus compil。 为什么叫 c plus 呢?因为我特别喜欢 c 语言,所以我一直想做一个扩展版的 c 语言。 当然啊,我最终实现的是一个缩减版的 c p, 其实应该叫 c minus。 anyway, 我就叫 c plus 啦, c b c 嘛,没办法。 ok, 那我具体是怎么实现呢?在介绍正式介绍这个实现内容,实现思路之前,我先大概给大家介绍一下编辑器是什么,他是怎么工作的,以免有些同学基础不是很扎实,嘿嘿。 compiler 是巴拉巴拉巴拉一个 program translate so from high level language to a low level language to create executable program。 所以这里有几个关键字,首先它是用来翻译的,对吧?它是翻译目标是从高级别的语言翻译成更底层的语言 low level 语言。然后他目标呢是 create 一个可执行的程序,也就是说你如果有一个程序,他可以把一个高等级的语言翻译成一个,翻译成某个东西,这个东西呢,机器可以运行,那你这个东西就是一个编辑, 简单吧?这是危机百科的定义,我觉得非常的惊艳。 ok, 那我们知道他的定义之后呢,我们来看看一个边气的正常 工业级的变音器,他的啊,整个变音过程是什么样的?工业级变音器呢,分为前端和后端这两个,嗯,组件板块。 所以呢,整个变异过程呢,也分为前端变异和后的变异两个。这两个步骤,前端其实就是我们常说的这个 passer, 他的目标呢是把元代码,人类可读的元代码翻译成一个中间代码,以便给后端去进一步处理。前端分为两个步骤,第一个是执法分析,也就是我们常说的, 他的目标呢是把我们人类可读的语言简单处理一下,然后告诉计算机这些词都是什么 含义,就这么一个意思,所以它的产出呢,其实是一大堆 token。 比方说我举个例子,我们知道 i n t, 它代表 integral, 是一个整数的意思,对吧?是说它是一个类型,然后它是整形的这么一个关键字,但计算机不知道,所以我们得 把这个单词给单独抽出来说这个是一个类型,然后是一个整数。那比方说我们定义了一个方法叫 add, 我们做完词法分析的时候就得告诉计算机 add 是一个函数, 那下次计算机在呃后续在处理这个代码的时候,他再看到 add, 他就知道,哦,原来 add 是一个函数,这个就是策划分析要做的动作,然后就是语法分析, 语法分析其实就是要生成最终的中间代码了,这个中间代码一般来讲是一个 ast 抽象语法术。呃,当然了,你也可以把它做成这个 lvm 的中间代码, 这个不重要,这都是实现细节。我们回头再讲。我们讲最传统的,我们如果把它说做成一个穿越法术,他大概是个什么样子的东西呢?我们现在计算机已经知道,通过施法分析已经知道每个词是什么意思, 但是他不能组成一完整句子,对吧?其实我们希望让他们知道词和之间的关系,让他们组成一个语句 statement, 这个 statement 是按照我们的语法,对吧?有他的逻辑和运算蕴含在里面。 举一个简单例子,如果我们要实现一个四加三乘以二加六这样的一个 计算,当然我们知道乘法他这个有优先级,对吧?他肯定会先做,然后再做加法,然后最后我们会得出一个结果,这个结果呢就是一十六。 ok, 那他最终做出的 ast 大概长什么样呢?哎,长成这个样子,三二 乘法,然后呢是四加法,然后呢?是 哦,写不下了,六加法,我们最终的抽象语法数就是一个这样的这个状态啊,他用逆波澜式去表示的话呢,就是这个样子,然后 加四再加六, ok, 大概就是这么一个状态。当我们有一些语言,比方说 list, 这个语言是韩式的语言,它 本身的圆的原始状态就非常类似于尼泊蓝氏的这个 passer, 写起来就会非常简单,就他很轻易的就能得到这个抽风抽象语法术。嗯,这是一个特例,我们先不展开讲我们正常的啊代码,比方说 c 元,对吧? 或者加外语,它的面向过程呢,他想要得到最终的这种抽象语法术,需要经历这个 togonize 和 pass 这两个过程。 ok, 我们得到了抽象语法术之后呢,那我们就进入了编译的 最核心的关节,叫做后端。后端呢分为两个组件,一个是可选的,叫做 optimizer 优化器,第二个呢是 code gen, the rate, 叫,我们也叫 code gen, 呃,它是代码生成器,就是我们最终目标平台目标机器的可执行代码的生成器。我们先讲这个优化器 optimizer, 它是通过 啊输入一个中间代码,然后他经历了一系列的优化过程,然后呢又得到了另外一种,或者是同样的中,同样一种的啊中间代码,他做了一些优化工作,就比方说你写了一图很屎代码, 嗯,执行效率非常差,它通过这个 oppo mind 呢,它能够分析你代码得到里面,嗯,去除一些,去除一些没用的代码,对吧?不影响结果的没用的代码,去转换一些逻辑,去做一些替换,那可以得到一个 嗯,更利于执行的性能更高的这么一个代码。嗯,这里面常做会做一些,嗯,常用操作,比方常量替换呢? 比方说这个函数内联呢?包括说这个时代吗?剔除啊,对吧? deco 等等等等等等。这个优化器呢,是真正的工业级的变异器中最难最核心的 这个组件。但是我们这一次呢,我们不涉及这个部分,因为我们并不执行,并不 care 我们的边 电器执行的效率,我们并且是一个 toy 空排了最后一步呢,其实就是这个。呃, code gen generator, 他会把我们的中心代码翻译成最终我们想要的平台的目标代码,可执行代码。比方说我们如果我们的平台是叉八六这个平台的, 那我们就会把它翻译成差不六的绘边,对吧?比方说 moq 什么什么,然后什么部序,什么什么,对吧? add 什么什么 等等等等等。如果说我们这个目标平台是加瓦训机 j v m, 那他就会翻译成见面目的这个语言,比如 load 什么什么 store 什么什么 add 啊,什么什么。这个就是根据你最终选定的这个平台,我们来实现一个啊,大马神器。在这里我借题外话插一嘴,我介绍一个项目叫做 l l v m, 这个是玩变音器的这个领域可以说是最知名的项目, 他的项目是做了一个什么事情呢?他定义了一种语言叫 l m i r, 也是一个,就是前面提到的这个中间代码,他把这个中间代码呀,就是给各个平台,比方叉八六的平台, m d 的这个平台,对吧? a r m 的某某某的一个架构对吧?等等等,不同的平台,不同的架构,它都实现了这么一个,呃, optimize 和 cojie 的过程,也就是说它把后端各个平台的这个后端都实现了, 而且实现的非常非常的好,应该是目前的 state of art。 那我们如果真的想要做一个可用的哈,真正的可用的编辑的话,我们最简单的方式就是说我们写个 passer, 把我们目标的语言翻译成 l b m 的 i r, 然后我们直接使用 l n r 选定我们想要的这个平台,去给它生成最终的机器码就完了, 是吧?非常简单,所以这个项目是非常非常牛逼的一个项目。那它用处不光在编译器这个领域啊,它可以用在很多领域,比方说这个机械性领域啊,这个数据库优化的领域啊,等等等等,我们啊就把它大概提嘴, 有兴趣的可以再去详细的去了解这个项目。 ok, 这就是变音器,整个一个工艺级的变音器的整个呃, 变异的过程。但是我们的这个变异器呢,就很简单了,没有这么复杂,我们前后端合一,没有中间优化这个步骤。然后呢,我们的目标代码是基于我们自定义的一个 vm, 既不是复杂的叉八六,也不是像 jbm 这种啊,比较复杂的这个讯机,我们是自己定义的一个讯机。这个啊,目目,目的当然是为了简单啊, 这个训机呢?呃,也是一个麻雀虽小,五脏俱全,该有的东西他都有。一会我再具体讲这个训机子我们是怎么定义的,他里面是哪些内容? ok, 然后另外一点就是我们这个变异过程,它是一个 one pass 的变异过程。什么叫 one pass? 就是我们读到这个圆码,我们一行一行一行 去给他做编编译和分析,然后当我们把这个所有的代码全部 pass 完了之后呢,我们的目标代码就已经生成好了,我们就不需要再去读这个原码,就是我们原码只读一遍,我们就可以完成这个 pass 和 co generate 这个过程。然后我们得到我们的想要的,我们制定的讯机的机器码, 一趟完成,但是一趟完成有个弊端,就是会有一些特性,嗯,就是 c 元的一些特性,我们是没法支持,但这些特性不支持也无伤大雅。比方说我们的函数类的局部变量,我们不能,我们必须得定义在函数的最开头的位置。 嗯?什么最开头?比方说举个例子啊,按理说我们这个 red 变量的声明,我可以声明在 这,对吧?但由于我们是 one pass 的,我们必须得把它生命在函数最开始的位置。具体原因,后续的这个分享,我会讲这个更详细的讲这一块的。啊,原因,对, 总之呢,他就是有一些这样的弊端,但是无伤大雅。 ok, 这个就是我们整个编辑的设计书,大家先知道个大概,接下来我们就讲一下,具体讲一下我们 vm 的 大致的设计,这只是一个 get 设计,具体设计包括这个指令级啊,这个计算器,这个具体的内容我们后面还得用单独的分享去完整的讲述。 ok, 我们的计算器呢,它的计算就是核心计算,是基于计算器和 stack 这两个组件来做的,这样做的目的是为了简化,比如说我们不需要 做,比方说我们用二元计算加法,对吧?加法肯定是两个数相加, a 加 b, 那如果我们是用传统的叉八六的这种,呃,就是物理机的这种架构,他的他的这个运算运运算单元呢?是在 cpu 内部,对吧?他能够处理的数据就是在 cpu 内部的 这个计算器,比方说 a x, b x 这些计算器,他能够直接做做运算,然后把结果输出到计算器里。他不能说 我基于赞来做运算,因为这个赞在内存里内存的读起速度跟这个计算机的这个 cpu 的这个速度其实相差一百倍以上,对吧?那他这个是没办法去 嗯直接运算的,所以,嗯,在实际的物理中,我们如果要计算 a 加 b, 我们需要把这个数据从内存加载到计算器,然后,嗯,运算完了之后呢,再写回这个计算器,如果要存储这个数据,我们还得把它写回啊内存。 但是在我们这个设计里面呢,我们为了简化设计,我们只有一个通用的计算器,所以我们的二元计算,那一元计算就直接基于这个计算器,二元计算呢,我们会基于我们的占顶,我们的占顶占的 pick 去跟通用计算器一起去计算,所以他的 a 由 u 呢,是距于这两个组件这两个位置去去运行的。 ok, 那这就设计到我们的计算器设计。我们计算器设计也是采用极简设计,一个就是 program counter pc 计算器来指定现在目前运行到哪条指令了,以及就是,呃,下条指令的话就是这个 pc 加一,对吧?就是保持这个代码按他既有的顺序去执行。 嗯,然后呢就是两个指针计算器,一个叫做 stack point, 一个叫做 base point, 这个也是经典的命名哈,这个叉八六 面也是有这些计算器的,他们两个指针呢就维护站的这个站顶, base stack point 的维护站顶,然后呢 base point 呢?维护上一个站的站顶, 因为我这个站如果要回去的时候,我还得能能找到上一个站在什么地方,对吧?一个函数调用起个新站,我执行完函数,我现在要回到函数之前的位置那,嗯,代码是可以回去了,你的这个站的内容也得回到原来的位置,所以就得有一个 basepoint 的去存上一个站的位置, 这就是我们所需要的全部的四个计算器,非常非常的简单,极简设计, ok。 然后就是我们的内存空间,内存空间我们用的也是一个极简设计,我们必须得要装的东西。首先就是我们的代码,对吧?我们的 vm 指令,那 编好了之后,我们有个得有个内存空间,可以要存存放它,然后呢我们得有这个真正去处理的这个数据,刚刚说了这么多时间站,对吧?那我肯定得有个站空间,然后还有些我们的静态数据 和这个字面量,我们也得去。嗯,存储这个东西呢,在变异的过程中,我们会把它存在一个叫 data 的空间里,这一套设计呢,其实跟真正的 c 元的设计是很像的, 我们真正的叉八六里的这个,这个 c 的这个设计,对吧?我们的,呃,整个内存空间呢,分为这么几块,我们每一个程序它可以拥有一整块的内存,当然是虚拟的,比方说是三十 阿伟的,呃,地址空间的程序,他会有四 g 的内存,对吧?然后他会分为这么几块,最底下是代码块,上面是数据块,在上面这一坨是堆, 就是动态的内存,在上面呢是占,然后占呢,是从大往小的,因为它必须得从大往小,下面都是已经占满了,你不能说从小到大,你不知道从从不知道从哪里开始,对吧?在最顶上呢,有一块是 这个内核的代码,你说如果我们要做系统调用的话,会堵到这里面的代码,但我们平时肯定是不能用的。 点空间好,用户空间就是这么一大坨,有这么四个区域,我们这里没有堆。为什么没有堆呢?因为我们并不想主动 去实现动态内存,我们动态内存会通过一个作弊的方式去实现,就是 nativecop, 这个一会再讲。 ok, 讲完了。内存空间之外,那就是剩下的我们的讯机就最核心的部分就是它的指令级,所有的 这个机器的平台的指令级,我个人哈,按我个人理解都必须包含这三块,第一个就是 safe and load 这一类的指令,第二个第二类呢,就是运算类的指令,第三个就是分支调整类指令,所有的平台都必须得有这三类指令。嗯,当我们为了简化我们的实现,就是做了一些作弊类的指令, native call, 它主要就是去处理 i o 的操 操作和动态内存的操作。嗯,这个正常的平台是不需要这些指令的,其实通过前三类指令可以实现的,这这个这里些东西,但是会比较复杂,我们就不管他了, ok, s l 呢? seven low 的这个指令呢?是什么意思呢?因为前面有介绍,我们的真正的运算都得 在现实里啊,都必须得通过计算器,然后 cpu 才能去给大家做计算。那内存计算器跟内存之间呢,就需要有一个方式来打通他们的这个连接,如果是从内存呢?内存到 计算器,我们把这个操作呢叫做 load。 如果是从计算器返写回 内存呢,我们就叫 c 啊,当然不同的平台这个命名不一样啊,我这边就是给你举个例子,这这这一类的打通内存内核,那个内存和计算器的指定,我们都叫 c 盘 note。 第二类指令呢,就是运算指令,这就是我们计算器的核心指令。运算指令,它主要分为三类运算, dixer, rhythmetic 的运算,算数运算就是你可以认为是四则运算吧。 第二类呢是未运算 bit。 第三类呢是罗晋让雨啊,霍啊飞啊,对吧 等等逻辑运算。 ok, 这一类的指令我们叫做运算指令。第三类就是分支跳转,当我们这一个原料要实现判断,实现循环,实现函数跳转,都需要分支跳转指令, 那就是一些 brunch 啊,然后 jump 啊,对吧, compare 啊等等等等,都是用作分次消转的。 ok, 第四类呢就是我们的所谓 nit four, 为了处理 i o, 我们可能会有一些这个打印的方法,对吧?包括呃打开文件,写文件,呃读文件等等。然后呢,还有跟动态内存相关的, uh, my luck free, hmmm set, 嗯,通过这两类指令呢?我们在我们的代码里面处理 io 和内存的时,呃和动态内存的时候就会非常的方便,我们的代码实现也会非常的简单。 ok, 这个就是我们训练机的概要设计,大概是这么一个设计思路,大家先看个大概, 然后呢我通过一个例子让大家理解一下,大致理解一下 vm, 它的就是我们这个 vm 的运行原理,那细节内容我们可能需要单独的去讲,它是怎么运行的呢?如果说我们有断断码, 其实我们的代码就是一个 hello word, 我们把它拼完之后,代码区就会有这么多指令,这是他完整的指令,然后呢 data 区呢?就会有 字面量,对吧?我们这个 hello word 的这个阿斯柯玛,每个都是一个阿斯柯玛,就就说白了是个 char, 对吧?哒哒哒哒哒,一直到杠铃结束, 然后呢,我们的站如果刚编完的时候,这个 s p 不会在这两个 s p 和 b b 都是处于零的位置,就是初始位置啊,不是位置零,它是 max 位置,因为它是从大到小的, 这些都从小到大的。对,我们的 pc 这个计算器就会在第一行代码这个位置等待执行,我们的 a x 计算器呢,也会是空的状态。好,这个时候我们执行第一行代码 pc, pc 开始在零位置实现第二代吗? pc 加一,然后把这个指令读出来,我们看到是什么指令,我们做相应操作,看是去掉下去里面,去掉下去里面取出镜呢?还是去呃, 站的这个指针呢?向上向下减呢?还是把这个站里的数据加载到这个啊?计算器呢?还是对计算器和站里的数据做一个计算呢? 啊?这根据这个指指令的不同就会有不同的这个行为,结果,等我把所有的指令呢全部执行完退出啊,当然会有跳转,跳转的话这个脾气可能一下就跳到某个其他的位置了。然后最终我们会把这些代码全部执行完, 里头里头里头全部弄完,弄完之后这个缩水站指针也会这个加加减减加加减减,通过这个普通的还是调用加加减减,最终也回到最开始 位置,然后我们这里面的所有 data 该用的也全部用好了,然后我们最终结果呢也保存在 x 里面了,这个代码就结束了。这个就是我们的 vm 运行的整个过程, 是不是非常简单,非常的清晰,非常的易懂,哼哼啊,可能大家理解还是会有点抽象哈,不过没有关系,我们做一个下期预告,我们下期呢就会详细讲解我们的 vm 指令核心的指令都是怎么运作的,怎么 呃执行的那像函数调用啊,像这个外循环判断啊,呃,怎么通过这些 vm 指令来达到这样的呃效果,这个就是下一集的预告。嗯,敬请期待。行,今天就先讲到这里, thank you。

好,我们接着上课啊, 正规文法,正规式的转化啊,如果你知道一个正规文法,如果把它转化为正规式,我刚才看到这个规则, 这规则呢,就是如果是这样一个式子啊,我们可以把它写为 一个加啊,把这个货呢写成加号啊,然后他的 g 呢为 s 等于 r 的 b 包背他。如果你是这样一个试纸啊,如果你是这样一个试纸,然后呢,我们也一样可以把它写成 f 等于 s, r 加北塔,他的减呢为 s, 等于北塔 f, b 包,然后呢,我们可以,哎,用什么正规式的分配率,结合率,交换率 啊,然后进行求解啊,哎,解这个正规防尘处,俺家是不是像一个防尘,对不对?我们怎么解?我们看个例子 是有这么个文化啊, g 啊,然后呢? a 呢?能生成零 a, a 呢可以生成零 a 或零 d, e 呢,可以生成零一 a 或 a 生, 是给出这个文法的正规式啊,整体语言的正规式啊,你如果像我们以前没有这个 解法呢?那我们就硬干,对不对?我们就观察啊,观察那些也不应对,哎,现在我们可以直接解出来啊,怎么解呢? 我们首先第一步杠子把这个货都给写成加号,对不对?你加号来代替这个货啊,然后就可以把它写为 a, 等于啊,把这个深层呢写成等号,把这个 bo 写成加号,就是 a 呢等于零 a, a 呢等于零 a 加零 d, b 呢等于一 a 加 fc, 对不对?然后解这个方程组会不会解? 如果让你解这个方程,你会不会解?然后注意里面的非中间符就是什么位置数,我们就往解位置数的嘛,非中间符就 就是位置数啊,能不能把这个位置数解出来,我们看一下啊? 这是,这是我刚才要剪的这个方程,我们第一步怎么弄呢?我们观察一下,我们这个,这个是个位置数,我们这个位置数是不是可以带到这里面来代替这个本地行不行? 可以,就这样,所以我们把它带进去,代替把三带入二中,其实我们就代替这个 b 啊,就可以写成什么 a a, 这个零 a 不变嘛,然后加什么零 b, b 呢是什么零?零乘 b, 然后 b 呢?是一 a 加 action, 然后根据乘法的什么分配率,对不对? 我们就可以把它展开展开,什么零一 a 加零对不对?这是分配率得到的,是不是?哎?这等于分配率得到的啊,正规式的分配率啊,然后就得到这样一个式子式,这个式我们 再根据分配率,我们把什么把 a 踢出来,对不对?把大 a 踢出来之后可以得到什么零加零一 a 加零,然后这个是指五,是你可以怎么预算啊? 他五四的 a 等于什么啊?看公式,看这个公式,五四是上面这个样子,对不对? s 等于啊, s 加北塔,最后他解围多少 s 等于多少?阿尔法地包北塔,所以现在我们再翻过来看,五四 他应该等于什么?求解, a 等于什么?零加零一,什么 b 包乘零。 因为这个领域代替这个 a 码,所以他出现了这个式子的什么右边对不对?领域出现的这个式右边,然后 b 包呢?是由他人申请的这个括号申请的,是吧?所以他就变成了 零加零一 b 包零一个月啊,然后呢?再把这个 a 代替到什么?代替这个 a 仪式里面的 a 就等于什么? 这里加个零,对称个零,零零加零一必保零,对不对啊?哎, 这样的话,我们就把这个正规试就出来了,对不对?这个就是我们由刚才那个正规文法产生的正规式,我们这个正规文法产生的正规是什么样子呢?就是这个样子, 就这个样子,对不对啊?哎,就这个零零或零一必包零,看到没有?我们可以用 公式啊,一个计算公式,把正规式计算出来啊,把正规文化对应的正规式计算出来,哎,这个就更强大了,对不对?嗯, 将我们看下一个例子啊,然后我们这个文法啊,这个文法呢,我们还是用等于后来代替这个箭头,用加号来代替这个过,然后就变成什么 a 等于 a, b 加 b, b, b 等于 a, c 加 a 加 b, c 等于什么? a b, 然后我们来解这个方程,那现在你应该就会解了,对不对?我们解这个方程怎么解?把三次带入二次就可以得到什么? ab 加 a 加 b, 对不对啊? ab, ab 加 a 加 b, 对,然后 ab 加 a 加 b, 这个试试又干嘛? 能不能解除 b 了?哎,可以解除 b 了吗?解除了应该是啥样子? b 包是谁产生的? a a 对不对? a 的 b 包乘 a 加 b, 对不对?哎? a b 包乘 a 加 b, 哎, b 包是这边产地的,然后因为这个这个来代替 b 的话,出现在他的右边,那我们就是 aa 的 b 包乘 a 加 b, 对不对?哎?然后下边干嘛?把 b 加入哪里一试,对不对啊? b 加入一试就得到 a, 等于, 哎,等于这个啊,他把 a b 分配率,是吧?分配率提出来,把 b 提出来了,把 b 提出来,就是 a 加 b, b 嘛,然后 你这边代替 b 大 b 变成这个狮子,对不对? a 加 b, 然后后面跟这一块啊,就是想把 b 大 b 型踢出来,变成 a 加 b 啊, 所以这个就是我们刚才那个正规文化产生的正规式,对不对啊?如果风这么计算,让你去眼睛肉眼看啊,让你去一个四推,让你腾出不出来,对不对啊? 很难推出来,不能说肯定推不出来,很难推出来啊,哎,对,下面这个啊,我们就是要把加号再用我们的货来代替加号,再用货来代替,就变成了他,没有,这个就是我们的 正规文法记忆产生的正规式啊,正规文法记忆产生的正规式就是这个样子。 接下来我们继续看又一个正规违法记啊,这个记呢?长什么样子?哎,这,这是这样一个样子啊, 然后我们首先呢还是代替等号来代替这个箭头,或用加号来代替,是吧?然后就变成这个样子,然后我们来解这个方程。 怎么解?把三十当哪里啊? 喂?这里是微的吗?而且只能带入一室了吗?二室呢?也带入一室对不对?代替这个 u 对不对?代替了之后变成啥样子了?想测评 就是 z 一零加一零,对不对?再加上什么 z 零一加零啊? 对,就是 z 零加一零,哎,就变成这个样子,然后干嘛呢?把人提出来对不对?分配率提出来之后变成什么 z 幺零加零一,再加幺零加零一,对不对? 现在我们的 b 包是由谁产生的?这个那个白头在哪里?这边这个在左边,右边地包的,对,因为这个来代替这个在左边,对不对啊?那你就白头在左边跟就行了啊。所以我们 最后就是 z 一零加零一啊,一零加零一地包,其实就是一零加零一的正地包,对不对?哎,然后我马上升成 正规式啊,把中货来代替这个加号啊,还要代替一下,这个才是我们想要的正规式,对不对啊?哎,这个就是我们想要的正规式啊,接下来我们再看一个例子啊, 这边的这是一个正规违法。你们的飞中间服是谁?这边的飞中间服是哪一个啊?来,我们找个同学李岩, 李岩来没有?没来,这里面的飞中间不是哪一个?你是李岩吗?那你为什么坐这呢?你还没回答我的问题, 这里面的飞中间不是哪一个啊?标志图,好,请坐。你在睡觉吗?是干嘛的?我都没发现 哎,昨天打游戏打的对不对啊?打到几点了? 这个白色的图就是这个标识图,对不对?哎,标识图啊,你不要不认识 飞中间服了,然后第一步上啊,我们用等号来代替,箭头都要用加号来代替,对不对?就变成这个样子对不对啊?然后你可以把这个飞天服踢出来,踢出来之后我们由他深深的 呃解决。解这个方程嘛?解这个方程解开解释多,就是什么表,呃,表示图等于,呃把这个代替过来,就是 l 成 l 加 d 的 b 包,然后他的正规是就是 l l 过 d b 包,对不对啊?哎,好,这就是我们正规文化,有了之后怎么去 先生他的这回事就他妈解出来的。朋友们,哎,考试考的,我告诉你,从第二天开始全是考点啊,没有一个不是考点的,谁不能考哪个? 这是正规文法啊,正规市到正规文法的转化。刚才我们这有一个正规文法,我们可以什么 解出一个正规式的?现在我们有一个正规式,怎么找到他对应的正规文法知道没有?哎,现在教你这个啊,有一个正规式之后怎么找到他的正规文法啊?首先呢令 正规,那什么你这个啊,字母表,哎,是我们的非中间服,正规文化里面的非 中间符呢?就对应我们这种表啊,然后对任何正规式啊,啊,对一个正规式啊,选择一个非中间符 z 生成规则 z 啊, z c c r, 然后 b e s 等于 z s 什么凯虎对不对 啊? z 可以申请我们这个正规式,然后呢令 s 等于 zs 就是我们开除,从开除这里我们现在正规违法。呃,什么中表有啊,开除有啊,对不对?还有什么?我们的出观念是要有规则,对不对啊?我们的规则在哪里?对不对?哎,我们的规则啊, 若 a 和 b 都是正规式啊, a 和 b 都是正规式。 对,形容 a 生成 ab 的规则啊,转化成 a 生成 a, a 什么 a 大 b 啊,然后 b 呢?再伸伸小臂,大臂,再伸伸小臂啊, 对,这种样子的正规,对,这种样子的什么?呃,先生,呃,这个产生室啊,对,这种样子的产生室,我们怎么弄啊?我们 把这个小臂啊,用大臂来代替,然后呢大臂呢?再产生这个小臂,对不对啊?形成两侧规则把它。其实呢臂是新增的非中间符啊, b 就是一个非中间符,现在我们非中间符是这样产生的,然后还有 其他规则啊,对,违法,对于转化的违法中心,如 a、 c、 c, a、 b 包 b 的规则啊, a、 b 包 b 的规则进一步转换成什么呢? a 深深, a 大 a 破 b 啊?对,把这个 a 地方写成 a 大 a, 因为这里就设计了什么地规,对不对?我们就是地规才能产生什么地包啊,所以我们这里一定要有地规,在这个文化中啊, 因为这里是 b 包对不对?所以才会有什么有 x, 有 x 的话就只剩一个小 b 了啊,所以这边必须有小 b 出现,对不对? a 大 a 货小 b 这样写啊,你不能把这个小 b 放这里来, 发这里来的话,你就没有办法产生 s 这种这种情况啊,没有产生单独一个小臂这种情况,所以啊,你这个要过啊,过小臂才可以 不断的利用规则,三个规则是进行替换,直到每一条规则最后只含有一个非终结符为止。朋友,最后只剩下一个非终结符,我们就结束了啊, 其实也就是我们正规违法就要求只剩下一个非中间符,对不对?因为我们正规违法的非中间符,要不再试着最左边,要不再试着最右边?对,哎, 现在给你一个正规式啊,然后把它转换成正规违法。首先我们先指向他,对不对? s 生成这个正规式,然后把它用我们的规则结, 规则三,是不是?规则三,用我们这个规则对不对?如果是 a 生成 a b 的,我们用什么 a 生成 a 大 b, b 再生成小 b, 所以我们这个应该怎么弄? 我们这个就是我们的 a 码对不对?后面这块就是我们的大臂,我就用 d 我们大臂来代替,对不对?哎,我们大臂来代替啊,然后臂呢?在身身后面这一块,对不对啊?臂在身身后面这一块啊, 哎,这块结束了,然后就到我们这一块了,这一块怎么弄呢?哎,就用我们规则点 对规则是吗?对,有 s, 这种情况,我们有规则是对不对?哎,规则是是怎么变的?我们这个有 s 呢?我们把它在 ccd, 把我们 ccd 规用我们 d 规来形成啊,所以我们这边应该是小 a, 小 a, 大 b, 对不对?哎,小雪大 b, 然后这里是 a 货币是吧?哎, 所以就我们的文法就是这个样子啊, 哎。哦,他对还对这一步进行了一个变化,其实这个变化也都可以啊,然后变了也可以,就对我们这里面的小一小一大批这种情况又进行了一个用深 代替啊,谁呢?又谁谁呢?小 a 大,大 b 啊,然后这个是一样的,大不大气都可以啊,都一个意思。所以最后就这个就是我们 这个正规式啊,我们那个正规式对应的正规文法,看到没有?我们给一个试纸,然后找他的文法,正规文法啊,正规文法就这么找出来的,懂了没有啊?我们可以这样来申请,哎, 将来给你这样一个正规式来找他的正规玩法,怎么搞啊?一样,首先呢 s 生成这个正规式啊,他是 r 形成了这个 正规正规式,然后呢?下回来干嘛了啊?用我们的规则三来代替什么计划?这个就是我们的什么大臂吗?对不对?那就是, 哎,哎,生成啊。 lt。 替代生成这个是吧?哎,替代生成这个啊,然后这个呢?在用规则几对?在用我们规则是来形成那个地规,对不对? t 生成什么?就是他的 t, 因为他是货的关系嘛,所以是 lt 和 dt, 对不对?呃。哦,他他的 lt 和 dt 啊。呃。然后还有 包,因为是 d 包所有 fc 了,然后还有 fc 了啊,你这里面是没有体现 fc 了的,对不对?这里面才体现了 fc 啊。所以最后我们应该申请的是什么?去掉这个规则,然后如果想把它去掉的话,那我们要怎么来弄? 其实就是 mc 来代替这个是不是代替他?代替他,代替他,如果你代替他的话剩下谁了? 剩一个 l 对不对?所以 l 一定要出现,一个 l 一定要出现,那你就变成了什么 l 过 lt 看到没有?然后如果代替他,他他呢? 那你就是什么 l 或 d 或 lt 或 dt, 懂没有?因为你代替了他之后还剩了个 l, 你把他的胆骨写出来, 对不对?当你还要气也要出现,你的地位不能消失了。代替之后对不对?哎。所以他代替之后就变成了这个样子 啊。这个就是我们的右线性文法啊,三星文法里面的右线性文法,是不是啊?懂不懂没有问题,对不对啊?只要你知道那那两个那四四步啊,理解他们四步,这个是很简单的 哦。接下来叫有群自动机啊。有群自动机。哎,这个就很核心的东西了。哎, 这个要懂啊。这个不懂后面就没法再学了啊。有群制动机是具有离散输入和输出 系统的一种抽象数学模型。有群自动机呢?有确定的,非确定的两类确定的。有群自动机和非确定的有群自动机呢,都能准确的识别正规级啊, 用这个自动机来识别我们的正规级啊,正规级就是那个语言,懂了没有?就是我们的语言啊,语言的集合就那个集合。我们先看一下什么叫自动机啊?我们先看, 哎,这就是一个自动机,看到没有?这是状态,这是输入的口号哎,然后呢就跳转到了下一个状态,看到没有?这就叫自动机啊。 哎,你看这,这叫自动机,看到没有?这就是一个自动机。其实状态转化球,这个状态输入也一个转化,下一个状态, q 一输入 b 就转入了下一个状态, q 一输入 a 也转入了下一个状态, q 一输入 b 呢?转入了下一个状态,这就叫什么自动机啊?不要自动机,它里面设计的什么状态,还有什么这个输入符号还有什么 映射,看到没有?有一个映射状态和状态的一个映射,对不对啊?好,我们现在再发过来看这个就好理解了啊, 我们从确定有熊制动机开始讲起啊,确定有熊制动机 dfa 啊, 一个确定有球自动 gm 是一个五元组,他里面有什么?有丘,丘是什么呢?一个状态的集合啊,刚才我们看到一个状态 一个状态的转换,对不对?所以 q 呢,是一个状态,有群状态集合,每一个元素称为一个状态,它里面包含的状态是转换状态啊,里面包含的状态啊? c 的话呢,是我们字母表,还是我们之前提到那个字母表? abc 啊?字母表啊,每个元素呢?是一个输入字符啊? f 呢是一个音色,从我们一个状态到另一个状态的音色输入的是什么呢?输入其中的一个状态 啊,一个状态,然后输入一个字母啊,然后我们扣一状态,输入 a 字母,然后就变成下一个状态输入,输入是两个对不对?修成这个嘛,输入这个作为输入,输出呢?是一个状态对不对啊?他的输出是一个状态这个音色, 他是一个单子英雄啊。 f f, 什么叫 q i a 到 q 机啊, qiq 机呢?都属于什么?我们这个状态这个集合 a 呢?属于字母表,那个集合对不对?单子你说怎么弄?你就一个输入对应 一个输出对不对?那我们就要单职音色。对,我们数学里面经常见单职音色,是吧?你看这个这个企业是一个单职音色 s y 这种曲业是不是单职音色?一个输入专业一个输出对不对啊? 表示当前状态 qr 输入制服 a 的时候啊,突然输入一个制服 a 的时候呢?自动机将转换到下一个状态 q 机, q 机呢?成为 qi 的后继状态啊,后继状态 单子函数呢?是指?单子函数是指啊,就就就这种情况啊, f q i a 唯一的,确定了下一个要短的状态,其实他的输出是唯一的啊,他的输出是唯一的啊,即每个状态的所有输出 边上的标记啊,都输入制服啊,不同啊。像这种情况就是你状态不一样,你的这个对应的制服就不一样,你看输入 a 的时候到 s, 输入 d 的时候呢?你到 s 三,输入 c 的时候呢?你到 s 四啊,呃,制服不一样对不对?就你状态不一样,然后从这个状态和下一个状态的这个制服是不一样的,懂?没有? 输入字母不一样叫输出的状态就不一样啊,所以说确定的,你从这个输入这个字符,你知道哪个状态?你是确定的,对不对?哎,你是确定的,所以叫确定。有群状态机啊,是确定的啊。 s 呢,是我们唯一的一个初态,注意 s 是属于什么?他是一个状态啊,不是开始服,是一个状态哎,他是属于一个状态。 z 呢,是个中态级啊,中态就是到这个状态就结束了啊。 然后给你举个例子, c, d, f, a, m。 等于这里有几个状态,三个状态, q 零, q 一, q 二,三个状态对不对? 这个是什么东西啊? ab 啊,制服对不对?这是一个制服级啊,制服表, 哎,不是什么映射函数对不对?从一个状态到另一个状态的一个映射丘陵呢? 初泰,不对,初始状态从从那里开始啊? q 二呢?中泰集科那个集合是中泰,中泰说明可以有很多个啊,中泰可以有很多个 中太极,然后这里是映射,映射很关键,其实就是我和我们的规则是对应的啊,我们的规则对应 f, f, 输入是 q 零, q 零这个状态,输入 a 的时候到哪里? 求一,求一个数 b 的时候呢?到哪里?求二,这个状态扣一,这个状态,输入 a 的时候呢?到求于自己。求一,输入 b 这个状态,呃,这个制服呢?到求一啊, q 二这个状态,输入 a, 拿到 q 二, q 二这个状态,输入 b, 拿到 q 一,然后我们就可以根据这个呢写出一个状态转换取证了,就是这边是制服,这边是状态 q 零,输入 a 到 q 一, q 零,输入 d 到 q 二 q 一输入 a, 那到 q 一 q 一到呃,整个 d 拿到 q 一 q 二呢? a 呢?到 q 二 q 二 b, 拿到 q 一,知不知道?哎, 当然了,我们根据这个呢,我们也可以画出一个什么自动机来啊。确定有什么自动机?从丘陵开始。丘陵什么?初泰对不对?丘陵是初泰就是中泰,丘是中泰,中泰。你看这样写的,画两个圈圈看到没有? 两个圈圈是中表示中泰,初泰呢?画个箭头就表示初泰啊。 q 零是初泰, q 二是中泰,然后 q 零输入原因呢? 把 q 一都要 q, 你是不是 d 呢?要 q 二。 可以输为难到球赢可以输定拿到球赢可以输为难到 q 二可以输定难到 球衣。哎,这个状态这个自动机就申请了,看到没有?这就叫自动机啊,确定有群自动机 不会?谁给我自动机?其实还是很简单对不对?通过这个自动机我们就可以生成很多自动创啊,生成一系列的自动创,我们一会再说啊, 然后我们看这段话啊,嗯,对。 su 地沟啊 su, 呃。啊,不是安全了。赛克马,赛克马 b 包中的任何波算北塔啊?对,这个赛克马 b 包。赛克马是什么?是我们的字母表对不对啊?我们字母表,假如说 a、 d 两个元素有我们 a、 d 的 b 包啊, a、 d 两个元素的 b 包 可以对应很对于很多字不算,对不对?对,他走任何字不算。若存在一条从初泰 初泰节到中泰节的道路啊。从初泰节到中泰节的道路。在这条路上所有湖的标记,所有湖的标记连接。连接成什么?拨串等于北塔 等于白塔啊,凌晨的佛算等于白塔啊,就所有湖,所有湖啊,你假如我们这有一个佛算 baa, 然后你看,从这个初代开始出发, d 是吧?叫做 q 二,这个 b 出来了,是吧?然后 q 二这个状态再到 q 二 a 出来,对不对?然后 q 二状态,再到 就又一个 a, 对不对?然后 ba 就可以生成,所以呢,我们 baa 就是我们什么 这个状态基 dfam 所识别,能被我们这个状态基所识别。 若 m 的初太节同时又是中太节,那么 x 就可以被 m 识别,就是我们初太节又是中太节,我们 x 就可以被 m 所识别啊, m 所识别的波串的全体记为 lm, 哎,全体记为 lm, 成为 d f a 所识别的语言啊。哎,所以我们像我们 ab 啊,我们这个状态机所识别的语言是啥样子呢?我们看一下啊, 如果我们从 q 零开始出发到 q 一,这里面有什么?有 a 对不对啊?然后 q 一再到 q 一呢?有 a, 有 a a a, 但是呢,你能不能到了中泰啊?走这条路 没有建成指向中泰,对不对?所以你看看,若一条湖从初泰到中泰的道路上,你到不了中泰,那你这就没有必要了,对不对?只有走这边你才可以到中泰,对不对? 所以这边走出来之后是什么样子啊? d 对不对?然后 a a a a d a a a a 是吧?所以我们他所识别的语言是什么? b a 的 b 包,对 b a 的 b 包啊,对,真帅,有没有?这就是我们这个状态机所能识别的语言,就是 b a 的 b 包, 或者可能可以识别,或者可以接受的啊。 刚才我们看的是什么?确定有穷壮害机?现在我们看这个非确定有穷壮害机, 非确定友情状态机。 nfa 啊,一个非确定的友情状态机。 m 是一个五元主 啊, mc 一个五元组啊,跟我们刚才那个确定与状态是有一样,也是个五元组,对不对?然后这里面表示的也一样啊,胸呢,是什么状态啊?谁的呢?是字母表 z 呢?中太极 哪里不一样呢? f 和 sf 还是映射? s 还是初泰,但是初泰这个是个集合,刚才我们那个初泰呢?只是一个初泰,只有一个初泰, 这个是初太极,这个 f 呢是一个映射啊。首先我们看 f 状态转化函数, f 不是一个 安值函数,他是一个多值函数啊,多值函数看 ff 什么 two, 其中一个状态 q 一,假如我们 q 一输入 a 对应的是什么状态集合,那我们数学里面他怎么表示呢? 就是一个书啊,对应的什么多个输出让我们表怎么表示这个情况呢?就是 s 轴就是外轴,然后一个 s 就是什么 都有很多个值,对不对?不过有很多个我还值,对不对?哎,就这种情况是吧。嗯, 哎,他是一个什么多子函数啊,多子函数多不行啊,你一个孩子闺蜜多个我爱死,是不是多个我爱死啊?所以呢,在这里我们可以看一下啊, s 一输入 a 到可以到 s 一还可以到哪里啊?到 s 二还可以到哪里啊?可以到 s 三啊,你看他一个状态输入相同的值, 看到没有?可以到达不同的状态,哎,所以相同的值可以到达不同的状态,哎,这个就麻烦了,对不对啊?啊?这个就很麻烦啊,不确定 到底到哪个状态,你不确定,非确定有什么状态期,对不对?这叫非确定的啊,就是你不确定你输入一个值之后,你跑到哪个状态去啊? 有图可知啊, f s 一对应出来的是一个集合啊,不是像我们是一个单职,是一个集合 s 一 s s 啊,这样一个集合啊,并且呢,悲切的女装陨石状态金呢,还允许什么 fc 轮的存在 啊, f q i f 然后也得对应一个集合啊,也得对应一个集合,看到没有啊?这个,这个我们后面会用到的啊,这种撞上去很重要,后面一直会用啊,我告诉你,后面一直会有,刚才还有我们什么这个开 啊,这是一个集合初太极啊,对, s 是一个初太极,是一个集合啊,不是一个状态,是一个集合, 所以现在我们再来看,现在我们再来看这个例子啊, f 一 a 对应的是什么?三啊,这,这是一对应的是吧?但是 f e b 呢?对应的是什么? 一二两个状态对不对?这个对于三个状态,这个对应的一二两个状态输入 b, 二呢? 所有 a 对应的什么?空就没有二叔 b 呢?对应是三,这个状态二叔三叔的 a 呢对应的空,三叔 b 呢?对应是二十个状态,所以我们现在把它举着状态转换。举着画出来之后呢?一 ea 对应的是什么?三,状态一 b 一对应的什么?一二状态二对应的二 a 对应的什么?没有啊?空二 b 对应的呢是三这个状态三 a 对应的是空,三 d 对应的呢?是二,这个状态对不对?哎,这个可以理解,是吧? 然后我们把那个自动局画出来啊,状态转换图画出来,哎,那个状态转换图, 我们这个装在左上图里面呢,我们看一下啊,哎,我们初太在哪里? 一,三对不对啊?能看有两个箭头对不对?哎,两个箭头,然后我们中看啊。二, 那我们二就两个圈啊,两个圈,然后呢?接下来我们就画,一, a 对应的是什么?三,一 b 对应的呢?一二两个状态对不对?二, a 对应的没有?二 b 对应的呢? 三,这个状态对不对?三,对呢?没有三比对的呢? 二,这个状态对不对?哎,就这样,就这么个东西对不对?对,任何 fc 动作 对,对啊,不是对这个嘛。 b 包中的任何佛算北塔,若存在一条从初代到中泰的道路,就跟我们刚才一样,在这条路上呢,所有湖的标记连 接生活换等于白塔,然后白塔呢?被称为有非确定有群状态及 mps 所识别,或者接受。若 mps 的某些结既是初泰又是中泰,或者承载一条湖从初泰到中泰的 x c 罗道路,那么 s c 罗呢?可以对这个状态基因所接受,是吧?哎, m 铁呢?所识别的波创呢?全体即为 l m 铁成为 呃,非确定有趣状态级 m 撇所识别的语言啊,像我们这个所识别的语言是什么呢?我们可以大家看一下。初赛出发啊,到初赛结束,所以我们用什么呢? b 一个 b 对不对?还有什么呢? b b b b b b b。 对啊,在这边就 b 的什么 b 的正率高对不对?然后这边呢?哎, 按什么 b? 最少是 a b 对不对?然后按什么 b b b b 对不对? a d, 然后后面再跟 b 的 b 勾对, 然后这边呢也要 a a b b b, 然后也可以走这边,看到没有啊,也可以走这边啊, 哎。 b b 的 b 包,然后这边呢还是什么?这边是什么? bb 的 b 包对不对? bb 的 b 包啊,这边呢是 a b b b a d b b 的 b 包啊,所以他这个识别人员呢是 b 的 b 包, 然后呢? b 或 a, 就你走这条路或者走这条路啊,你走这条路呢?然后可以是 b 的 b 包乘走这条路呢,也可以是 bb 的 b 包,知道吧。哎,他说是个圆,就这个样子对不对 啊。所以这个也可以理解啊。所以你一定要从中泰从初代十八到中泰结束,你如果你到不了中泰,这这条道路就废了,你不能把它啊写成一个字母串啊。由恩,由 nfa 确定可知同一个字路段。北卡可由多个多条路来识别啊。我也到了,来识别啊,像我们这个北卡等于 bbb。 由三个路来识别啊, 唯美三条路啊,一条路,状态一,状态二状态三 状态二。就这条路看见没有?状态一状态二状态三状态二,还是有什么状态一状态一状态二还是有什么状态一。 哎,状态三啊,从这里出来,状态三状态二状态三状态二。 我不交作业,你看有没有作业啊,我来看一下 第三个哦,有有作业啊,哎。 第三七零三第二第一题的第三三点一的第二题啊。 哎呀,咱俩遇到第二脚踢,哎,第一次脚踢。 哎呦 哦,没有, 我们有这两个 在第二组的第四批人看到没有?三层正规文码,这个讲不是三层标牌啊。三层正规文码 好, 不要怕。

大家好,这次我们来开始看一个完整的程序怎么再用会边语言编写,然后运行出来。这个我们知道这个会边 语言啊,汇编语言生成的可执行文件就是这个点。 ex, 一个汇编语言程序从写出到最终执行需要编辑、编辑、 连接、执行这几步,编辑可以用编辑器,也可以用直接用记事本记事本写,使用汇编语言编译程序对原程序进行编辑才是步骤。可直线文件包含两部分,就是程序本色、 跟程序相关的描述信息。操作系统里面操执行可执行文件的程,这个操作系统啊,依照这个机器码加入内存,然后并进行充实化,然后由 cpu 执行程序。比如我们有这样的一个程序,这样的程序呢?这里有有些问题,那 这个呢?他这个是会编指令,这里呢有为指令,这个是为指令。那么这个这这些为指令是什么意思?这些是会编指,然后他他这个这个像这样的,这个是为指,会编指令就是我们用的。那这个会编命令指 程序里面的指令。为指令,那什么是为指令?为指令是他这个不,不是被 cpu 来执行,那么谁来执行为指令?为指令是编意器来执行这个为指令。什么意思呢?比如我们这一段程序你要运行,你首先要放到那个内存里面去, 这每一个指令呢?他只是执行这个相应的这个动作,但是这个指令本身他自己不会跑到内存,不会,不会跑到什么代码段里面,对不对?这个呢?他这个指令本身他自己放在内存的什么地方,这个他自己 是管不了,这个要有变异器,其实也就是那个,那个跟跟操作系统有关的那个变异器来来来完成这个动作。这就像我们每一个人都只会做自己的工作,但是呢,我们自己不可能安排自己做什么,我们具体做什么工作是要有 有有有有组织来安排。所以这个他他他这个为指定,也就是这个意思,其实就是我们可以简单把他考虑为 对这些汇编指令进行进行安排的,这个把它放到内存里面的这些这些相应的工作,其实相当于操作系统做的那些工作,就相当于这样的,这样的意思 为止,这个为为止令本身为止,令本身是不会不会被 cpu 执行,他是由变异器来执行,这个已经解释了,那这个是也也,这个也是一对为指令这个门的。嗯,就是这个断一断的开始 跟结束断面,然后断面结束。一个汇编程序啊,他可以有多个段,他可以有代码到数据段。前面我们还说过一堆战段 and 呢,他还有一个 and 也是一个汇编程序结束就结束的意思,这里是我们看到这个是 n、 d、 s, 这个按的呢是整个程序结束,这个有一点区别,这个我们自己在写程序的时候注注意一下就行。哎,秀他这个行业是假设,假设是什么?什么意思呢?就是假设某一段寄存器和 某一个断纪存器和程序中的某一个用 segmeans 定义的段相关联项目,就是说明这种关联。这个呢你们这里可以,这个你看 把代码段寄存器,这个 cs 是代码段寄存器,跟这个段相关的,这个段,我们看到这个段从这里开始,这是到这里结束,到这里结束, 也就说现在是这个这个这一段呢,他这个地址,他就放在代码断寄存器,也就是把这个断跟这个断寄存器相关。然后呢我们可以把原程性文件中的所有内容 称为原程序,将原程序最终由计算器直接处理的指令或者数据称称为程序,然后通过编意链接或编为机器码存储在可执行文件,这个就是这个样,这个这个面的刚才已经看到,我们看到,我们刚才已经看到了,就是一个断面,现在我们要编写一个这样的程序, 这个是断到这里结束,这个这个断呢,就他的他的他的断地址啊,就放在代码断寄存,代码断寄存器,然后呢程序执行完了,他要返回,对不对?这个程序返回是什么意思?为什么要返回呢?就是我们这个程序执行啊,你,你总是 要通过 cpu 来调来来来来来安排他什么时候执行的?他在那个内内内存里面,他什么时候安排执行呢?是我们前面已经知道了是 csip 指向他的时候,他就执行好,执行完了呢,执行完了之后呢?那 cs 那那 csip 他又要指向另外的程,所以这个程序执行完了啦,其实就是释放那个 csip 那个指针,让他指到别的程序去。我们知道这个这个 windows 程 windows 系统啊,他随时都有很多个程序在执行,像这个 windows 是多任务,但是呢我们这个这个都是 都是操作系统啊,他是单任务一个程序。 p 二要执行的话,他必须通过一个正在运行的 p 一程序来来调调用,他将他加到内存里面,这个其实就是操作系统要做的事。 我们我们在那个 windows 下面装安装任何一个,安装任何一个程序,比如 qq, 你打开来之后,我们点两下打开来了,打开来了,他怎么能够打开来呢?那是由 windows 操作系统啊,这个这个调用的,对不对?他这个也是一样的意思, 你这个程序要执行,必须由另外一个程序来来来调调动,他就是把 csip 啊,由 p 二交给 p 一,由 p 一交给 p 二。哈, 那 p 二执行完了呢?他要把 cs ip 交还给 p 一,这个就叫返这个返回执念就是这一,这个下一次呢,我们就来看一下一个诚信怎样怎样,在那个都是命令,命,命令行,下面怎么来具体把它执行。



哈喽,朋友们大家好,在上期视频中给大家介绍了 automotesand 二零原理图的绘制以及常用快捷键的操作方法,那么从本期视频开始给大家介绍原理图编译遇到的常见错误以及纠正方法。好,我们首先打开软件 啊,我现在已经把软件打开了,然后我们还是接着上一期视频的这个 mp 三的这个呃电路为例给大家继续讲解。 那么对原理图编译的话,就是我们要首先选中这个工程之后,然后点击菜单栏的工程里面的第一个选项叫做 validate pcb project, 这个在呃之前的版本中,他都是命名为 compli pcb project, 这个公 功能都是一样的,都是一个编译验证的一个过程。好,我们首先点击一下这个按钮,大家可以看到 message 这个菜单中他就会出现对应的这个呃编译的一些信息,包括一些警告错误等等。 有时候我们这个 message 面板可能会找不到呃,怎么用呢?怎怎么调出来呢?就是在我们右下角的这个 partners 这个按钮,点击之后选中这个 message, 那么他就会出现我们这个 message 的这个面板在里面的话,他就会对应的一些编译的一些错误或者警告。那么我们来看一下这个三个, 第一个的话他是提示的是一个网络,没有一个驱动员是呃占三的 第三个引脚和优五的第八个引脚,然后第二个的话类型也是 no driving sauce, 就是没有驱动员,他是在这个优五的第十个引脚和优六的第十个引脚。 那么最后一项呢,就是编译成功没有错误发现,那么大家可以看到他前两个的话是一个警告的形式出现,出现了那么之前也给大家介绍过,就是说他对应的这些信息是以警告错误还是忽略,那么是在我们的这个工程里面的 工程选项里面,在这里面的话他是有各种编译的一些各种一些错误的报告的一些形式,那么你可以选择对应的为警告忽略错误或者是致命错误,那么当然前提是你一定要了解他对应 的功能才可以设置,否则的话你自己不要轻易去修改。那么我们就看这个例子中的警告信息,大家可以看到他这边的话是一个没有一个驱动员,什么意思呢? 你比如说就是占三的第三个引脚和优五的第八个引脚,我们找到占三占三的话就是这个 db 九的一个串口的一个头,那么他的第三个引脚就是这个引脚,那也可以看到这个引脚,那么优五的第八个引脚就是这个引脚, 这个是一个 max 二三二是一个 ttr 二三二的芯片,那么可以看到这个第八个,这个 u 五的第八个引角,他用了一个这种逻辑,逻辑的一个表示,电器属性的一个表示表示这是一个输入的, 那么而我们这个呃 gb 九的这个插头这边的话,他是没有进行一个电器属性的一个标识, 这个在实际的我们这个 bcb 的一个设计过程中呢,这个是不会有什么影响的,他只是方便我们就是更容易来阅读这个电路的一个原理, 所以说这里你标不标都没有关系的,那么呃两种方法吧,就是说假如我们不去改动他,那么我们直接可以把这个警告给忽略掉,那么就是在我们这个工程工程选项里面,我们找到他 这个叫 no drivers driving sauce, 就是没有驱动员,我们找一下,它是一个呃网络的形式,大家可以看, 那么它是。 net 什么什么什么 as no driving source, 所以说你找这个 n 开头的就可以了,那么找一下, 找一下,这边都是。 net 开头的,那么就是这项。 net nets, 就这一项,我们把它给修改成忽略不报告,那么再进行重新编译的话,那么他这个错误就不会有了。 好,我们首先对工程进行一下保存,然后进行一个呃变异,可以看到现在就没有错误了,直接是变异成功了。 当然了,这个前提我说了还是要一定要,你前提是知道他确实不会对我们的这个电路设计 造成影响的前提下,你才可以把它给设置成不报告。那么另一种方法呢?就是说我们要修改这个呃银甲的属性,把它修改成一致了,那么这个错误自然也就消失了, 所以我们这里还是选择不忽略,把它给改回来,改成一个还是警告的形式,那么我们中间变异, 大家可以看到他又报错了,那么我们把这个呃加三的这个眼角给他做一个修改,在我们的这个分装库里面, 在我们的这个原理图库里面,我们找到这个对应的 d b 九的一个插头,就是这个在原理图库中,我们把这个 d b 九的这个第三个引脚的电器属性做一个修改,那么现在大家可以看到就是他默认的话是一个 pencil 的一个电器属性,这是一个通用的一个电器属性, 那么这里的话,我们把它给改成一个输出的一个形式,因为大家可以看到原理图这边的话,这个 u 五的第八个引角它是一个输入,那么所以说我们要把这个第三个引角的电器属性改成一个输出,就是 output, 然后我们对它进行一个保存, 嗯,对它进行一个保存,然后选中我们的这个 d b 九的原件,右键 更新到原理图,他会提示就是更新的一个原件到原理图中,我们点击, ok, 好,我们回到原理图中,可以看到这边粘三的第三个引角,他变成了一个输出的一个电气属性,重新进行一个编译, 大家可以看到右边的第一条的那个警告已经消失了,就是我们优五的第八个眼角和寨三的第三个眼角,那么第二个同样的也是一样的,他是优五的第十个眼角和优六的第十个眼角。 那么幺五的第十个银角呢?就是我们这个 tsd, 它是有一个这个电器属性的这个银角,那么幺六的第十个银角呢?就是我们的这个 mcu, 那么幺六的第十个银角是这个,呃, tsd 解释,那么这边的话他是没有这个电击属性的,所以你只要把这边的这个银角改成一个具有电击属性的一个银角就可以了,那么这个错误就会消失。 那么本节视频呢?我们就先给大家介绍这种形式的错误,在下面的下一期的视频中,我们接着给大家介绍其他的一些常见错误。好,本期视频就到这里,谢谢大家,我们下期视频再见,拜拜。

大家好,上上节课咱们讲了新建了五个问号, 咱们先打开咱们那个上节课的流程图画面,咱们新建了一个电流信号,新建了一个启动按钮,这个自定义变量,还新建了一个远方信号,故障信号,还有他最终输出的一个控制指令。 上节课咱们也讲了他这个画面按钮的这个属性设置,包括他的一个状态的一个反馈。本节课咱们讲一下他的一个逻辑阻态的一个设计, 通过两种语言功能,块图和这个梯形图进行对火箭冷却风机的一个控制, 咱们把它先关闭退出 逻辑设置,大家点这个算法 点编辑, 咱们新建上一页,新建一个提心图,给他名字命名成 火碱风机控制 描述,也给他起成这种描述 t 金图。 然后是断类型,大家选一定要选这个程序,然后点确定,然后咱们就进入这个火箭火箭冷却风机控制这个阻态界面。首先第一个是启动, 启动按钮,对应的一个启动按钮,第二个是他的一个远方信号,这是他的一个远方信号。 第二个是故障信,呃,故障信号,故障信号咱们要给他取一下访,也就是无故障, 所以说要选择一个长臂接点,长臂接点就类似于他的一个取访故障信号取访, 然后最终输出一个线圈, 输出一个线圈,最后让他回到 选择上,咱们把线连起来,第一个连到左边的母线上, 接下来咱们给他加一个描描述, 这个是启动按钮画面,启动按钮 给他修改一个颜色,红色吧,我复制一下, 这个是远方信号, 这个是故障信号, 这个是对应的一个开关量输出的一个启动指令, 启动输出 这个逻辑咱们就做好了。 在一条线上的这种是雨的光系,如果你在这再连的话,这就是祸的光系,这就是与祸非。嗯, 这个是咱们梯心图的一个逻辑的一个组态。

不学了,咱不学了,咱考五十分。考的都不少了。考零蛋的都有啊,咱考五十分能少?不学了,别把脑子用毁了我儿。

来,这边是这期视频的一些基础知识阶层部分啊,本期基础知识阶层部分呢,主要讲键盘和鼠标的一些按键的名字操作哈。 首先呢这是大印度演员,是一个键盘和鼠标标准啊,这个鼠标呢?它的左键,这个叫它的左键,这个叫它的右键,这个呢叫滚轮啊,这滚轮是可以摁下去的啊。 然后呢,接着是这边就是小数字键,那我们我就讲一下我们软件中要用的几个按键,首先这个是 ctrl 键,有没有加控制键, cf 上档键, thankboy 键,然后 esc 键,然后这个叫退格键, 然后滴滴特删除键,嗯,基本上就是这些这些按键,大家知道一下位置在哪里哈,然后后面我讲的时候就不再重复提示了哦,还有个回车键,大家知道一下哈。好,就这样, 这边讲下原理,普通话那个怎么操作哈?点文件新的,哎,搞错了, 文件新的原理图。好,这样就出现了原理图,工作界面呢,就是这样子,在这里是图, 这里是放,放图啊,放一些辅助说明的一些地方,这边呢是你对应原理图,然后这个是属于上上级介绍就不见了,这个是那个符号库,那符号库呢?是可以自己添加,添加,添加原件等,就跟原件有关 操作吧,这一场进行,然后要添加库怎么操作?点这三个点,点这个第一个添加,然后再点安装,然后把你要的库选中,然后点打开就可以安装了。要删除呢,就选中,选中你要删除的库,点删除就可以删除了,这边就不做颜色了哈。 啊,接下来眼镜,眼镜的放置,大概讲一下怎么放置哈,就是这里面先讲下,这里面就是跟原理图有关,所有操作都是可以一样的,有些东西比如说我要放一个 npn 眼镜,这里是可以搜索快速查找原件的, 比如说你你要说 npn, 那个 npn 我测一下,看 npn 是不是就出来了,然后这边下面是显示他一些参数,封装之类的东西哈,啊,我们双击他看就可以放这里,然后放这的时候呢,我们讲几个通用操作,就所有东西 你在放置过程中,尤其通过造成空格是比较旋转, a 开始左右翻转,然后呢外是上下翻转,然后按 table 键是进入对对你选中的东西的属性。 啊,这原件,这个原件呢?这个就是标识,标识服,就是说第几个这个原件注视就是原件型号,一般注视原件型号,参数等等东西。 然后下面这些封装你是可以设置的,点编辑,呃,这个是添加,这是删除,这也可以自己自己自己弄啊,然后讲演示下怎么添加封装,点击添加浏览, 然后这边呢?然后这边点查找,然后这个改成坑退,这边输入你要的封装名,然后点查找,然后选中他,点确定,然后点确定,然后这边都给他提前编辑好, 选择你要用的,然后没有用就不管他,这选中哪个就白用哪个,我们用二零二五 a 就可以了,没用的可以删除,就选中他,点删除就可以,然后提示是否删除,点 yes 就可以删除了。 然后呢这边剩下都不用设置设置,就你一切设置好后,比如说我这边也设置好 npn, 也设置好后,你点击回车, 这光标就自动跳转到原地图上,然后放置位置,放好了就可以了。放好后呢你他会自动提示你要自动给你放第二个,包括呢,发现也是氧化完终点后,他会让你继续往下滑,然后呢,你这个时候如果不不要放置了,按一二十 c 退出就可以了 啊,退出啊,光标如如果把如果出现绿色的,这这这这个紫色就表示你退出放置状态了,如果没有出现绿色光绿色光标,你就再按一次,也是按到他出现他正常来讲按上两次到三次左右 就会出现这个绿色旁边就表示你完全退出刚刚那个放置状态。你要讲放线,怎么放放线呢?我们统一用这上面这里进行放线哈,这里比如说要放置线,右击他,然后选择你要放线的类型, 然后这里就开始放了,放心,就这样子,然后左右放,然后注意一下几几个点,然后按,你看我刚按了两下,一直他弹出绿色的,要彻底退出方向状态, 然后呢你,哎放线的时候你看看这样子,这样,然后他会在体质放第三个点,如果你不想放第三个点,一 s c 就退出了,然后然后这个时候还没有完全退出方案,你就变成了放新线状态,定义新的起点了。然后如果你不放线了, nsc 要继续放线,可以继续这样画, 继续画。对,然后 nsc 特发现状态,如果都不画了, nsc 取消,然后还靠绿色高亮亮起表示退出关键状态。其他的花葫芦召唤啊, 就注意几个点,这个线跟线有关的,他的起点一定要在电器节点上,电器节点呢?放大一下你们就看得到啊,按鼠标上下滚轮就可以,左就可以往上上下滚, 稍等一下,找一个这个登机馆这里我看看到这四个点没有银角。电器节点在这个点上啊,就你连,到时候你东西连到这上面他会有一个红色的叉, 你看我这光标放在线,放在他是不是会会提示一个红色的叉叉出来,有红叉才可是你要定期给点叉,如果你看我放这里没有红叉, 你看是不是就没有红叉,只是一个黑色的叉叉,那个表示没有放在电器节点上,注意这个你脚一定要,就是线一定要放在电器节,就是电器节点上要有红插的地方。然后呢再给 扩展一个提示,就是这个导线上所有点都是有电器节点的,导线上点了你就不要,就基本上不用管他红插不红插,基本上都是有电器节点的,你可以随便随便放,你看我放在中间是不是他提示也是有电器节点的。 iasc 退出放置啊。接下来讲网络的作用啊,网络就是表示哪两个线就是不需要用导线,他也表示他们连在一起的一个作用。 网络放置呢,也是一样的要网络标签。像这个下面都都是要放电梯键,就这上面这这一块所有东西,嗯,除了这个这个还有一些其他新品,就这下面所有东西都是要放电梯节点上的, 然后你右击他,选择左键是选择功能哈,那你要放完这你就右击他,比如说你要文本字不算还是文本框自己选, 文本化就是定义起点,定义终点,然后呢然后按 usc 退出放置,然后进入高量状态,你可以双击他,也可以用这个 pro 进行,他会弹出悬浮,这样他会弹出他的属性页面, 他这这里弹出的呢,是你这个绿色选中的部分的那个他的属性啊,然后这个 tex 就定义他的文本,再定义他的长和高,就长和高之类的东西, 那这里你可以定一下我们的定义一一,然后这里可以改颜色啊,字体啊什么都在这里可以设置哈,然后设计好后,你双击这个图纸,就跳到跳图纸前面来了,后面就移动到这里来,那个就不会卡住了 啊,这是不是吐就好了啊?你要画画图也一样的画图呢,就这这里面的东西他不用放在电影间,任意画都可以,比如说我要画一个 眼圈,我这样子放一下,然后呢这里因为我们通常为了不跟不跟这个导线重复,所以我们会点一下太薄,就是在双在当局选中他之后呢,然后我们会按一下太薄前,这个线呢,我们会给他改成一个黑色的线来区分开来,点这里可以改颜色 啊,这边呢然然后呢双击双击这个,那个叫图纸界面,然后点这暂停键,那个光标就回回到图纸了,然后去去画画画东西,然后同样他会自动放置,第二点 asc 取消,放他绿色亮眼,就不要完全退出放心状态了。 然后呢这个就是圆,然后这个这个东西记住一下,就是这里面画线,自己画的一些播形图啊,什么,这主要用法播形图什么的,然后他也有参数设置,同样的你双击进去,然后自己去设置,这 英文自己翻译一下,就是就就可以设置了,然后可以自己去尝试一下啊,那接下来就是添加或者准确啊,应该是更改一个自定义功能,比如说你想把这个放置里面的 uii 了,给它改成手工节点功能,那怎么办呢?双击这个,双击这个菜单栏空白处 啊,这边种类找到一个放置是一个屁,然后在这里找到放置,然后呢这里找到 uii 了,然后双击他进行编辑,然后呢把这个点击浏览,选择你对应的功能,然后也可以搜索有手工节点,他是这个功能,然后点确定, 然后这边呢是可以改标题这个括号前面的开始改,进行改,你要自自定义的名字,有手工节点,我们就定义个手工就好了,手工啊,这是手工,然后可以 确定,然后关闭好,我们再去放置呢,看更改成来看看看 url 改成手工节点功能了,然后功能呢也是可以正常使用的,然后以上就是原理图的全部内容了,好,拜。 接下来呢,我们进入 ad 十九的符号库设计的一个过程啊,首先是文件新的,找到这个符号库库, 然后找到一个原理图库,也加符号库,我们点击他对这个就调整到符号库的一个设计界面啊,南普罗阶层切换条 链接试图,然后点左下角 acs app, 而且现在现在全部都符号库。那种符号库呢?包括几个界面?这个是画图的一个界面, 以这个为原点参参照点哈,这边呢还是一样属性界面,这边呢是原件列表,然后这这这这下面就这两个就不重要了,然后这这下面这个呢是封装,然后可以添加添加删除你所你所选中这左上角选中的原件的封装, 然后接下来介绍一下他几个操作哈。首先是绘制一个眼镜,我们先讲一下怎么 我们点按绘制软件,主要是怎么回事呢?在这里这里这几个,首先这个是 啊,我曹家这右击那对就是这里主要还是用这两个功能,基本上都是用这个右击他,然后呢选择你然后绘制的那个东西,一般我们推荐是用线,很少用矩形啊,偶尔用,我们既然都是用线来进行绘制的, 然后呢选中起点,跟跟那个原理图那边导线的使用方法是一样的,使用起点,然后使用终点, 然后呢可以在在喜欢起电线充电,同时你可以按住泰宝键,在你还没有完全推放在你的泰宝键,就是设置你当前显然的现状态,比如说你可以绘制一个那个叫什么绘制一个箭头,我们哈喽,然后点击这个暂停就恢复继续了, 然后呢我们就设置这样子的啊,然后按 usc 退出,然后他退出,再按按两次推出他绿色光线不要完全退出状态。 然后就把这个比如说我们要定义这个原件,说这个就是店主,我们就说这是一个店主的原件,然后接下来怎么改一些参数啊,名字啊之类的呢?我看一下,哦对了,居然是原件,这只是一个原件体, 我们还漏漏了一个重要部分,他需要一个迎接,迎接老师在这上面复位置的点放置,然后有有那个管角就是迎接 aa 服哈,就像什么我们平常不是有一套二二十触发器啊,什么始终他这些东西都在这,特殊符号都在这里头,然后放置点管角, 然后可以进行按,按住 table 键可以进行设置,我讲主要几个参数,这个银角的名字,银角标识哈,是第几个?是第几个管角,这个到时候要跟服装队比如说我说一,然后他的名字叫哎哎哎, 然后这个是管角类型,就是管角类型,就是说他他是是这样子的呢?还是这个管角长什么样的?还是 io 口呢?还是长什么样的?还是说他就是帕斯维普通的,这帕斯维就普通的嘛。 然后接下来这个银角好像这个是长度输入后,哎,也不够长哦,不是,这个不是, 不好意思搞错了,你这个长度在这里没有一百,你说这条变长了是吧?太长了,我们看一下来五就好了,你现在连单位可以一起上,因为他默认的就是跟你系统设置的单位是一样, 这上面还有讲过单位数的啊,这就是一到该五,然后注意一下银角它也是有电气节点的, 看到右边这个叉,这个银角一右一,右边的这个叉叉没有,这个叉叉就是他电器节点的位置。然后呢我们或者说有个技巧,就是银角的电器节点跟他的名字是在相 反位置的,然后我们所以说我们放置银角的时候要这样子,让他电器节点那个有叉叉的地方是朝着元器间体的外面的,不能这样子绘制,你这样子绘制的话,到时候他导线接起来就不方便了,是不是你导导线还得接到这里面,这是不是就不好看? 我们一般就养成一个规定,就是把电器节点都朝外这边的外面,上面,外面是这样子的啊,右边的外面是这样子的,然后翻转也是按空格,什么这些都是跟原地图那边是一样, 然后左边的外面就这里了,然后没有用了。如果你不不放置了,你就按一下 esc, 然后还会自动标亮这个绿色的这个东西,就表示你退出这个影响防止状态了。然后你解放后我们讲一下怎么设置一些一些属性哈,比如说这里我们要设置对这个眼见,眼见 在名字呢进行重名名,你可以点击编辑,然后选中他,选中要改原点点编辑,然后这里就可以改名字了, 比如说要要把他这这个是他的名字,比如说你要改成一二三,然后这个是默认标识符,就是跟你选,还记得前面原理图讲的 npn 呢?什么有个优问号,就是这个这个这这里面可以进行设置的,就是他默认的一个名字叫什么, 然后这里呢也可以,我们通常是随便摸了,也通常我们习惯在他的名字后面加个问号,到时候别人用的时候呢?他他的到时候好用吗? 啊?这标识符你不能在这边可以自己改,然后封装,什么东西这边都可以进行添加,这里是添加封装,常用就是封装这里加一个,然后标识符名字改一下。

数据流图实力讲解基本图书管理过程概括 数据流图在可前线研究与结构化需求分析当中有着非常重要的意义, 他是从信息流的角度描述新系统的工作原理。 数据流图的绘制可以使用微软的 vs 二零零七绘图类型,可以选择数据流模型图,也就是隔音杀手。 绘制数据流图时,一般应从简单到详细分成 计划。 分层绘制数据流图的一般思路是这样的,在零成数据流图中,以业务系统为中心,识别外部信息源, 然后在第一层数据流图中分解出业务制系统。 接下来在第二层数据流图中对数据库进行分解, 这样一个数据流图的基本框架就出来了。接下来呢,可以在第三层、第四层等等的这个数据流图中,再进一步分解各个业务纸系统和数据库, 直到不能分解为止。 下面以基本的图书管理这样一个模型的数据流图绘制为例,说明一下这个分成数据流图的绘制的一般过程。 首先在零成数据流图中,我们以整个业务系统为中心,识别出外部信息源。 对图书馆的管理来讲,他的信息主要来自于两块,一个呢是借阅用户,比如说他来借书或者来还书, 或者呢来这个做借宿证等等,那像这个信息呢,都是来自于用户的。 另外呢,就是这个新书采购来以后,入库会产生书籍的相应的信息卡片等等。 那么这些信息呢,最终都是保存在一个数据库中,由业务系统去调取这些数据,开展相应的管理业务。 那么接下来呢,我们在第一层数据流土中,我们保持这个外部信息源不变, 数据库可以暂时不分解,先对业务系统进行分解,得到用户注册模块用户的登录、用户解书、借书、用户还书、新书入库登记 以及图书馆内部的盘点等等业务制系统。 业务系统分解出来,我们就看到了这个业务系统的大致的一个功能。接下去呢,进入第二层数据流图。 第二层数据流土中呢,我们在业务分解的基础上,将数据库进行分解, 这里我们将这个图书馆的数据库呢分成三大块,一块呢是存放用户信息的内容, 一块呢是存放的用户的信息,一块呢是存放图书的信息,还有用户的借还记录。数据库分拣后, 各个业务指系统也要做相应的修正。像这个用户注册模块,用户登录模块主要是跟用户信息数据库发生联系, 而解书、借书以及还书主要是跟图书信息和借款记录发生联系,像入库登记,他只跟图书信息数据库发生联系。 盘点呢,是根据图书信息和借款记录来进行盘点的, 在这样一个第二层数据流图中,图书管理的原理已经基本上反应出来,接下去呢,可以在第三层数据流图中,对各个业务 系统进一步的分解,一直分解到能够具体的用某种技术实现了为止。

各位同学大家好,欢迎大家来到我起点考研,此次视频讲解是由于瑞典教育科技有限公司出品,我是大家的主讲老师,今天由我带着大家学习葫芦松第七版客户习题一杠一详细讲解。 对于这个一杠一详细讲解分为三部分,第一部分,一杠一这个题目啊,所涉及到哪些考点,大家需要去看的。 第二部分,很多同学在做一杠一的时候出现了很多问题,比如说从食物模型的方物图,很多学生不会去绘制方物图,会知错误,缓解野鸡错,或者原理有写错, 那我们有没有什么做题的思路比较清晰的或者技巧能够让大家能做对啊,这是第一部分。第二部分,详细,手把手带着大家去写步骤啊,写步 写清楚,因为如果做题的话,我们该怎么去写?第三部分,因为在写步骤的时候,他有部分可能写的比较模糊一点,那我们给大家做一个完整的答案的排版,展示出来这个最终的答案。好,那我们看看第一部分。第一部分, 首先大家看到这个是一个,他说图一杠二一啊,是液位自动控制系统,原理是一图,那我们有这句话,我们可以得出个什么呀?得出液位自动控制系统,他的被控量是什么?被控量 也叫什么?也叫被控变量,他也等于我们的被控,也是被控变量,是一个意思 是什么?是我们的液位, 比如说,哎,那个水温控制系统对吧?我们的背控变量就是水温,背控量也叫水温。好,那我们说看一下,在任意情况下,希望页面高度 c 维持不变,那就是最终我们希望我们的页面高度 c 啊,就实际的,我们的液位啊, 就我们实际的业位,也就是我们输出的业位和我们给他人为设置的一个业位高度,他俩能够相等啊,就是啊,等于我们的期望的,也叫希望的页面高度摄影, 让你去说明一下系统的工作原理,并划出系统的方向图,系统工作原理, 支点控制系统的基本原理,化妆系统方向图就是控制系统基本组成。你要清楚的知道这些被控对象啊,被控亮,然后我们的给定输入,也叫我们的期望啊,也叫我们的希望输入。 还有我们的控制环节啊,执行环节,还有被控对象测量反馈啊,或者测量环节究竟是什么样的, 需要去讲清楚。这个地方很多学生容易出错,因为很多学生在绘制啊,就是由我的手模已经到方向图这块很多人整错了,各个环节 整不对啊,方框图最终没绘制对,算了。原理啊,一般很少有人会错,因为原理一般情况下,只要是比较简单的控制,你都能去叙述上来,主要是方框图这块很多人错,那我们对于这种类型题来说,怎么去做更合适? 他说,先说明对吧,说明工作原理,然后并绘制方网图。其实我是按照大家给大家提个建议啊,就按照一个正常人的做题思路,你要先去分析清楚他的方网图,然后再去写的工作原理,这样就变得非常清晰了。 好,那我们一步带着大家去学啊,就是方框图比较方块图怎么去绘制,首先我们要看一下方框都常见的方块都有哪些,我给大家画一下, 那我们看看啊,这是这个是我们的一个也,我 我们的给定输入啊,这是我们的给定输入。然后这个部分呢是我们的一般情况叫我们的控制环节, 这个部分呢,这个部分是我们的直行环节, 这部分呢看这部,这部分是我们的背后对象, 这个部分呢,这个部分是做我们的输出,也是我们的背空链。 不用了,这步呢叫我们的测量环节, 这是第一种啊,第一种的话是这种场景图形啊,还有外边有个输入啊,就是加到背后对象就干扰, 这是我们第一种常见的,第一种常见呢就是我们的给定输入和我们的备空量,他俩量成不统一,比如这个是个电压啊,比如说给定输入是个电压,这个备空量呢,是一个,比如实际的液位啊,或者是什么是温度,对吧?他俩量成不统一,所以我们需要经历过测量环节,把它量成进行统一化, 这是这种图形,还有第二种图形,第二种图形是这样的,第二种图形我们可以去写一下,哎,这种图形我给他换这种的话,是有一个 这种图形啊,是属于前 面前要通道有四个环节看清楚,然后,哎,他没有了,没有测量环节,没有反胃环节为一,就一个一。那这种的话其实我们的看清楚啊,这个这个部分依旧是我们的干扰, 这就是我们的背空对象,就是我们刚才叙述的背空对象在这啊背空对象,这个呢执行环节,执行环节在这,空的环节呢?空的环节在这这个部分属于什么?这个部分是属于我们的侧面环节。 那很多人说这个测量环节为什么不在反馈通道中呢?这是两种不同的,我们常见的测量环节,它是专门用于测量的,它不一定在反馈。你要看这 这个给定,就我们的给定输入和我们的这个备控量啊,也叫输出 啊,就是我们的这个被控量,他俩量成是不是?同意?如果说给定输入和我们的这个被控量他俩 是同样那个凉城,就比如说,哎,电压都是电压,温度都对应温度,或者其他的一种液位都对应液位这种。哎,这个实际的液位啊,这块的话是我们一个期望的液位或者我们给定的液位, 那这个时候他俩之间反馈只能用一了,因为良城统一嘛,那这个时候测量环节就跑到这来了啊。所以说这两种你要看我们的给定数和倍空量是否量成统一,决定了我这个测量环节到底是在下边 还是在,对吧?前向通道中,就在上边这一块。好,那我们知道这个方网图之后,那下面我们要清清晰的就是给大家分析一下我们去怎么去分析出我们的。呃,这个 原理啊,这个思路给大家讲一讲啊。呃,大家可以看一看啊,思路,那我们看看思路啊,这个思路,嗯,我将这个图给划掉吧,划掉 啊,划掉,划掉之后我们去写啊。啊,写一下他具体的思路是什么样的啊? 首先 先看一下啊,就是他的这个图形啊,这个图形,呃,我们去写一写啊,他是,嗯, 这个派的话其实我现在用的还不算太熟。呃,在这啊, 好,然后我们先看一下。第一啊,我们的 被控变量也叫被控量,被控变量你写成被控变量也行,写成被控量也行,被控变量我们可以知道是谁啊?是我们就是业位。是什么业位啊? 是我们实际的水箱的业位,对吧?叫实际业位,实际业位, 这是我们的一个我们背空变量,那我们再看一下我们的背空对象呢?背对用线我们知道,就是背空对象上输出的是背空变量,那背空对象我们就知道了叫什么。叫水箱, 背后对象就是我们的水箱, 然后我们再看一下这个水箱影。知道,那我们再看一下直行完结。什么 执行环节?我们执行环节我们就知道。对这个题来说,或者我们常见定义中我们会知道执行环节。像我们的电机啊,减速器啊,阀门啊,液压马达啊,他其实都属于执行环节。他对这个题来说,我们的 电机,电机我们驱动我们的减速器再驱动阀门,这是我们的直行环节,就是电,我们写下电,然后减电动机,减速器,空啊, 控制控阀啊,我写的是减写控阀。这我们的直行环节我们再看一下 啊,我们的就只用来确定我们的这个控制环节啊。控制环节,控制环节的话,一般情况我们把它是什么样的叫,叫什么名字?一般, 但是我的放大呀,放大或者电位器啊,或者什么什么什么什么那个,呃,功率放大或者什么其他的 或者矫正啊,都属于我们的控制环节。或者什么控制器啊,啊,都属于控制环节,这个控制环节中,对这个题来说,你看控制器只有一个,就我们人为给的这个电位器啊,电位器是我们的,一个控制器 就是我们的控制器啊,控制就是我们的,由谁来提供呢?由我们的电位器,为什么是电位器呢?我给大家讲讲这里面的一个东西啊, 大家可以看一下这个图,这个图刚开始啊,他是有一个给定电压的,当这 这个电压是什么值,其实基本上都可以。呃,你看这个给定这个电压,给定电压之后,这个中间位置呢,取的是接了个地,就说明啥? 接了个地嘛,接了个地之后就是电压就会零啊,这会电压就会零,零伏啊,零伏。 你看,如果说我这个这个轮子啊,就是这个是黄的变暖器啊,这个如果说正好出于零伏的时候,此时电动机不动,减速机不动,阀门也不动,对吧?那我保持我正常流水啊, 这个他的页面高度保持不动。如果说,你看我这个如果浮子在上面,比如说是一个正好,哎,是都比灵符大啊,那此时就有电压了,有电压之后驱动电动机,电动机在驱动减速器,最终控制阀门进行个开度啊,变大或变小,来控制我水流啊,这个这个 阀门啊,水流的流量,从而影响他这个具体的那个流进的水啊,影响高度。那你看一下假设说啊,我此时在上面,在上面的时候,比如说是正好是正物,对吧?此时电动机进行转动,因为此时他怎么才能为正呢?就是浮子下滑, 一枚勾都不够了,对吧?不够了,那我最终电动机开始转,因为电动机他转速太快,他要接个减速器才能接到控制阀门上,控制阀门做运转嘛,那阀门开度变大还是变小呢?如果说他要恢复一枚勾呢?阀门开度肯定是开度变大, 对吧?变大,因为他是自动控制,自动控制就说明自己能保持一个稳定啊,所以说他开开度变大,如果开度变小,就说明他这个不是自动控制,他会不稳定啊, 啊,所以说开度变大,开度变大之后流的水变多,所以这个浮子原来在下边,哎,流量变多了之后,他又上去了,最终到零浮左右,他就不动了,对吧?阀门就不动了,所以说能保持他这个高度啊, 那么我们就很清楚的知道了,这个电位器啊,其实这个电位器的设置,设置个领土设置这个他这个浮子这个给这滑动变动器这个点进行移动,这个部分就像那个控制环节啊,是控制环节啊,控制环节,这个此时的 那个对应的点代表的值啊,减去这个零啊,减去这个零,看清楚这个是零啊,这是一个比较,也叫一个控制环节啊。电位器作为我们的电位器啊,是一个控制环节啊,在这个地方就有个控制控制的功能啊, 那有的学生说这个电位器,电位器啊,这个电压,其实我给的是假如这个电压,我给的是十伏和给的是五十伏, 货给的是一百幅,其实他们之间的区别就是我想象的可能到底慢还是快,你看他五十幅,五十一百幅,他只要比零幅大,对吧?比零幅大。

计算机架构系统带座数字系统原理带座操作系统带座汇编语言带座对罗之斯汇编语言计算机组成计算机体系架构,有不懂的可以问。