UCB-CS61c-组成原理中文笔记-二-

139 阅读1小时+

UCB CS61c 组成原理中文笔记(二)

P16:Lecture 12: RISC-V Instruction Formats II - 这样好__ - BV1s7421T7XR

得让你跳啊跳,我不会让你跳,跳,让你跳,跳,跳起来让它变得更好,让它跳跳,我要让他们成功,你觉得我们今天要谈些什么?约翰,我们要谈谈斯托尔。

让我们回顾一下上次跳过的一个例子,首先呢,欢迎回来61 C,没错,这次我真的做到了,所以这是其中一个例子,但我把它翻转了一点,我是说我们要从这个机器代码开始,我们想把它分解成汇编语言。

那么你认为相应的组装指令是什么,我给你一点时间看看,我在查表上放了一点,左下角的绿卡,但试着提醒自己上次我们在做什么,呃,覆盖ISA以真正理解机器代码,所以我会给你一点时间让你重新定位,好了现在。

至少我们都像,哦耶,好啦,我记得说明书上写着,有一些读寄存器,或者我们称之为存储字的源寄存器,尤其是我们实际上对于任何存储功能,这实际上是存储词,存储单词指令,我们没有寄存器来写入输出。

因为关键是我们读了两个寄存器,其中一个有我们想存储到内存中的数据,其中一个有地址,我们将直接偏移量添加到,然后我们把数据移到内存中的那个位置,所以没有写寄存器,因此。

我们有RS 1和RS 2作为这里注册的读数,让我们从上一张表中稍微思考一下,这些是S格式指令,我们可以看到的是,首先是S格式说明,我们实际上总是有相同的操作码,你可以在桌子上查,零一零一零一。

然后现在到底是哪一种格式的指令,好吧那我们看看,三这个放克三场,它是一个三位字段,如果我们查一下,我会说,啊,实际上,这个0-1-0位模式就是我们所说的存储词,所以我写下了存储词功能的布局。

你可以在你的绿卡上查一下,在PC One C参考卡上,现在让我们尝试解析这些寄存器字段,然后也许中间,与我们上次看到的相比,这有点时髦,所以如果我们很好地解析寄存器,首先,注册源一。

这将是我们的基地地址,用于计算我们要存储到这里的基地址的地址,或者这里的寄存器被写成一个5位无符号数,根据登记号本身,所以如果我们真的计算它,它将是寄存器x2,然后同样地,我们可以计算出什么寄存器号。

R等于2,这将是源,里面有我们的数据,如果我们计算这个位模式,它将被注册x14,然后最后立即,记得那有点时髦吗,在这里,我们处理的是即时的12位中介,S格式中的格式,我们还在处理12位。

但现在他们分开了,前七还是高七,上面的七位,我们的位置25到31,然后下面的五位在指令中,第7位到第11位,所以如果我们把这两块地放在一起,并计算出这将是什么数字,这将是三十六,只是提醒自己如何计算。

然后需要注意的是,这个直接字段确实是有符号的,因为这是一种补牙类型的东西,所以我们这里有一个正的3 6,那么我们在一天结束时有什么,我们会有一个存储词指令,我们将数据存储在x14中。

登记x14到位于x2加36的地址,所以我想,这里最重要的是我们必须做这种连接的事情,与眼前,但它是相对简单的,我们只是查了一下,想起了这里的即时外观,这里还有一点要注意啊,是呀,最可能不是最重要的事情。

但就像思考五位设计师决定做什么风险一样,这里的两个寄存器,他们的来源,所以他们只读,它们实际上与R型的读数处于相同的位置。

另一个,呃,我想宣布一件事,丹,呃是最后一个推这个的,但我只是想提醒你,提醒大家,我们今天有个关于摩尔定律的很酷的演讲,免费午餐,它将由英特尔公司的执行副总裁,谁是安凯勒?

她将和我们的DJ金·尤院长交谈,这将是一次非常酷的谈话,我很兴奋能去那里,或者实际上,我希望我能在那里,但我们会看到的,希望大家都能到场,因为谈论摩尔定律真的很酷,我们也会更紧张一点。

我们会看到更多的摩尔定律,在这学期剩下的时间里,好啦,现在我们来谈谈跳跃,所以一开始我在说这个是不是,我是我不是在说纵横交错,呃,1992年的嘻哈二人组在谈论跳跃,也许也许也许Mac。

但我们现在要谈谈如何,这实际上可能被编码成机器代码,但在那之前,我需要揭示一个更像,剥开,再来一层洋葱。

揭示我们在这里试图谈论的另一层,所以你们可能还记得这张图表,我们还没有讨论这张图表的所有部分,还有一件非常重要的事情我们还没有讨论过,我们现在要谈谈,这里的程序计数器,我们所说的PC,所以PC。

这里不是个人计算机程序计数器,程序计数器是什么,这是一个32位的寄存器,但这是一个内部寄存器,所以它是不可编辑的,在正常情况下,你会使用所有不同的风险五指令,而是,它是一个寄存器,总是存储指令。

它将在特定的状态周期中执行,好啦,那么这里的类比是什么呢,我觉得丹和我用了这个比喻,就像这是书桌,这是我们的登记簿,这就是我们要用的,你可以考虑一下,个人电脑有点像角落里的日历,你必须更新。

所以每次你走进,每次你每天你走进办公室,你改变日历,然后在CPU的世界里,你实际上可以回到过去,类似的事情,时间就像,就像记忆一样,然后你可以再改变一下日历,所以这种程序计数器总是存储,你那天要做什么。

它与我们所说的寄存器文件是分开的,我们将开始更多地使用这个词,参考三两指示。

那些命名寄存器,这些编号寄存器x 0到x 3 1,那么程序计数器是如何工作的呢,它存储下一步要执行的指令的地址,所以如果我们记得我们的程序地址空间,在最下面是这个只读,或者这个片段叫做代码。

它通常被称为文本,如果你开始在金星的灵丹妙药实验室工作,以及文本是什么样子的,让我们假设它看起来像这样,我们的计划已经执行了一半,我们有与我们想要的每一个指令相关联的地址,我们想要执行的。

我们已经准备好了,我们下次会讨论加载和链接的问题,我把它们翻了一下,所以在我们最初的记忆图中,就像地址增加了,为了便于阅读而上升,我实际上包括了增加下降的地址,因为你可以执行第一行,然后下一行。

以此类推,等等,关于这个图的其他一些部分,那么什么是,呃,列出的或存储或加载到内存中的是四个字节,好啦,在那个特定的地址,例如地址十六进制十,我们把字节0存储在那里,它是大的还是小的取决于你的机器。

现在那个特定的机器代码与什么有关,是我在右边写的吗,哪个是原版,就像最初的汇编代码一样,然后它被组装成这个机器代码,然后存储或加载到那个位置,那么PC与此有什么关系呢,在我们执行这个广告指令之前。

程序是从哪里开始的,电脑确实是那个广告指令的地址,好啦,所以在这种情况下,它将是x 0 0 0或其他10,然后是寄存器文件,我在图表中把它们分开,提醒您,这是一个特殊的内部寄存器。

那么现在你认为当我们很好地完成这个广告后会发生什么,我们知道在十八岁的时候,我们会得到我们广告指示的结果,但广告的另一个作用是你可以在参考卡上看到,它实际上是增加PC,它增加了多少。

把它递增到下一条指令的位置下一条指令应该是什么,或者像下一个指令地址应该在哪里,在这种情况下是什么--嗯,下一条指令,如果我们只是抽象地,只看屏幕中间,我们知道的下一条指令是广告,幕后到底发生了什么。

当程序计数器,的确,立即添加的地址,好吧以此类推,等等,所以这张幻灯片的重点是向你展示,对于典型的指令,比如典型的生物,算术,逻辑,所有这些都将使程序计数器增加4字节,它是一条指令的长度在您的。

你的三位一体的指令,当时的力量,因此,所以分支实际上做的是,他们以不同于这种正常的方式更新程序计数器,每次添加四个字节,我这么说是什么意思,假设我们在做一个无条件分支,所以我们有这个。

我们有一个正在发生的循环,我们到了,我们得到这个j循环语句,然后现在我们要跳过指令,它被标记为循环资本L循环,那么跳跃是什么,好好干,在这种情况下,假设我们在十六进制十八,这是跳跃循环指令。

它想将自己更新为十六进制零C,我要把它写下来,但实际上引擎盖下发生的事情,就是,它不是说,嘿PC更新你自己到零零零,它实际上要说的是不,我想减去12到程序计数器,为什么这种有意义,这就像,好吧好吧。

我真的不知道,也许我开始的电脑在哪里,但我知道我想去的指令是在这之前的三个指令,这就是机器,汇编程序要做的事情,我们下次再谈这个问题,哦其实,我们现在要做的是,让我们看看在条件分支情况下会发生什么。

让我们假设我们回来了,我们在上面,我们试着把它分成相等的部分,但假设事物确实相等,所以我们要把树枝,在这种情况下,我们将跳到标签,以及标记为,这个十六进制一C的地址是什么。

那么这个分支是做什么的呢,它增加了指令,换句话说,16字节的程序来了,所以你可以在这里看到树枝,不管是有条件的还是无条件的,他们确实会更新程序计数器,这就是当你跳下去的时候真正发生的事情。

这里的另一个注意是,所以这是树枝被拿走的时候,如果树枝没有被拿走,然后你只需将PC机增加4,这有点像这里的正常情况,好啦,所以你可以像什么是基本情况,基本情况是默认情况下所有不同的指令。

他们可能会增加四个,但是有一些特殊的情况,所有这些其他的事情,他们会以不同的方式更新程序计数器,这就是我们今天要讨论的,是啊,是啊,那是个问题,啊,太棒了,它会记录下我们下次要回答的所有标签吗,是呀。

就像,事实证明,这有点棘手,但我们要定义一些术语来帮助我们,我们不是,其中之一是这里的这个,它被称为PC相对寻址,所以其中一个问题,所以刚才的问题是,好啦,嗯就像,你怎么知道有哪些标签,什么感觉。

它们是绝对地址吗,所有这些PC相对寻址是什么,不是存储你要跳转到的实际地址,比如PC应该更新到的地址,您将存储到该地址的偏移量,这算是说,就像嘿,总是加四个,我不在乎你四点在哪里,或者更确切地说。

我不在乎你在哪里,总是十六岁,因为我想跳到那个位置,这允许位置独立的代码,我这么说是什么意思,让我们把刚才看到的代码,所以我们在左边我们从很低的地址开始,这里,十六进制零z x十,也许在不同的机器上。

我们实际上会把所有的东西都提高一点,因为有其他的说明要储存在某个图书馆的井里,如果我们使用相对寻址来执行分支等于,我们还是会加16个,因为我们想跳的那个标签,总是离我们当前的指令16个字节。

所以就像稍微想想这个,这里有一些价值,另一个价值是,如果你不用储存,您需要跳转到的整个三个二位地址,就像正负量一样储存,那是一个较小的领域,记住,我们正在考虑如何将所有这些编码成一条3位2位的指令。

所以至少在今天的前半段,通常更改程序计数器的数量相当小,因此,我们实际上将跳转编码为相对偏移量,我们实际上立即将其编码为一个符号,因为我们可以跳到更高的地址,或返回到较低的地址。

现在把这个和另一个版本对比一下,我们将在最后讨论,这就是所谓的绝对寻址,上面说你会提供整个32位的地址,如果我们在一个,如果我们在一个32位的机器上,然后我们会用整个地址覆盖整个程序计数器。

现在我们会尽量少用这个,因为嗯,首先,你必须总是计算特定的地址,也许这对定位独立代码来说有点脆弱,它将是与位置相关的代码,然后你还需要立即建立整个三个两个位,到目前为止,我们所知道的关于立即建立。

我们有一个加i,但这只建立了直接的12位,所以我们需要一些方法来构建上面的20位,这有点像术语,现在我们要更深入地研究实际的设计,但我们会有点喜欢,对于那些拿起讲义的人,伟大的。

或者对于那些正在看幻灯片的人来说,伟大的,因为这些是那种,今天剩下的时间里我要用的术语,程序计数器,PC相对调整。

抵消,所有这些类型的事情,那么让我们来谈谈B格式,你认为b代表什么?是呀,条件分支,好啦,所以实际上这种格式,或分支,有条件,或者像条件分支,你知道那里有括号,但这里有什么例子。

分支如果等于b q r 1,R 2,然后你要跳到的标签,让我们考虑如何生成这条指令,以及它是如何类似于我们到目前为止所产生的,有两个读数寄存器,所以你把它和第一和第二进行比较,它们是否满足某种条件。

然后没有目的地寄存器,你不能把结果写在任何地方,然而,确实有一个直接的,所以我们要谈谈这个,这个媒体实际上是我们将如何编码标签风险五,一般用于标签,至少对于有条件的分支将使用PC相对寻址,换句话说。

让我点击通过,所以你可以看到发生了什么,换句话说,用于板凳,如果我们不分支,我们只需将程序计数器增加4字节,所以我们省下4个,如果我们分头行动,然后我们将此指令到标签的字节偏移量编码,好啦。

所以这是一个正数或负数,我们如何对其进行编码,我们将其编码为即时,让我们想想我们实际上可以对这个偏移量编码多少位,那么我们有什么,我们所拥有的,所以关于机器要记住的一件事是关于这些机器铭文。

风险五是他们总是有一个操作码,它在一定程度上指定了,以及CPU要做的,然后它们有另一个所有格式都通用的字段,就是他们有一个三位一体的放克三场,上面写着你要做的这一类事情,你要做这件事。

所以在B格式版本的分支中,这就像3b这个字段,这个三位字段类似于b e q或b n e或b l t,或者类似的东西,我们还有什么,我们还有什么要好好保存的,我们必须保存我们的两个源寄存器。

我们要比较的东西,我们知道他们会花五分钱,五位,每人给我们20个比特,我们肯定会用它来存储关于指令的重要信息,我们还剩下12个,然后我们要做的是,我们将有一个12位的直接场,它将代表相对偏移量。

注意这里我没有说相对字节偏移量,表示相对偏移量为,我们将稍微讨论一下这个表示法,不知何故,我们会知道或喜欢思考这个表示将是什么,我们有两个,我们有十二个比特,所以我们有2到12个可能的数字。

如果我们想前后跳跃,我们需要指定代表,所以我们实际上可以表示正二到十一,减去2到11,远离程序计数器,如果你想包括零种,那么我们会用什么样的单位呢,然后你就像,好啦,嗯。

为什么,为什么我们不能用字节,以下是一些选择,我在这里说什么,我们有12位信息来表示我们想跳多远,如果我们跳下去,使得12位表示增加PC的字节数,有多少条指示,如果在这12个字节中。

如果我们真的说这十二个比特,我们实际上说过它们代表了一半的指导,每个两个字节,如果单位是四个字节呢,所以12位实际上代表了要跳转的指令数,因为风险5中的风险,它们总是32位的指令,你们觉得怎么样。

让我们试试聚V,所以我在Poly V an L有一个二维码,我给你一分钟考虑一下,和你的伴侣谈谈,这是一个密集的幻灯片,我们将更详细地讨论一下,但我只想让你考虑一下,这是一个设计挑战,如何使用这十二位。

我们知道必须签署,但是这些单位代表什么呢,是啊,是啊,试试二维码,看看能不能用,如果不行的话,下次我试试,等待演示,太棒了,这就是我喜欢听到的,我来发动,谢谢你,好啦,我觉得其实,如果我启动键,谢谢你。

啊哈,你看,我想已经开始了,我觉得挺新鲜的,他们会做一件事,U,波兰演员,啊,好啦,好啦,啊哈,好啦。

完成了,好啦,哎呦,是呀,好啦,所以你喜欢,我猜,我想大家真正想说的是,你必须有同伴的压力才能让事情发生,所以实际上我在屏幕上看到了,但在你的屏幕上,但这是故意的,所以我想这是我要走的路。

我要回到这张幻灯片,所以你可以看到东西,我不认为这会让任何人停止投票,所以再给自己几秒钟考虑一下,发生了什么事,让我们看看你们都说了什么,或者更确切地说,你们中的一些人说,好啦,这就是我们所拥有的。

我把这个弄大一点,有意思,很多人说,说呀,这里所看到的是,这些单位是以指令的大小为单位的,或者四个字节。

让我给你一个事实,我没有给你。

这是61岁的人,你喜欢的第一个学习机器语言的人,为什么会发生这种事,但后来作为一个人,你们所有要做的,Vlsi,你会像,哦耶,当他们这样做的时候,风险也是相当聪明的,所以这是想法五,尤其是房车三二一。

默认情况下,这是我们在这门课上学习的ISA的版本,六十四辆房车,六十四房车一号,二十八,所有可能有更大地址空间的不同体系结构,或者更多的记忆,或者类似的东西,它们都有32位的指令,团队钻头指令。

当您的特定架构非常非常小的时候,这是非常有用的,所以当你处理微处理器时,所有这些东西都像你不需要20个立即的,或者直接的12位,可能你的收银机可能没那么大什么的,所以有一些压缩版本,你可以处理。

还有一个可变长度的指令可能会发生,当风险五有不同的扩展时,有什么想法,风险被设计成这个巨大的架构,这是一个指令集,可以匹配许多,许多不同类型的体系结构,但是对于一个特定的架构,让我们说。

用于仓库计算机或个人计算机的微控制器,你可能有不同的事情想做,也许你真的想把一堆浮点塞进去,然后你需要在你的说明中有更多的空间,风险五实际上默认情况下总是支持16位指令,压缩模式,因此。

它将把我们所说的分支偏移量缩放两个字节。

对这门课的启示是什么,所以我们有12个空间,我们可以说,好吧好吧,从这个特殊的指令,我们想更新程序计数器跳到这里,或者我们想更新程序跳回这里,在这个伟大的世界里,所有东西都是三三两两的。

所有的说明都是三个,两位宽,我们想要表示所有2到12个数字,或者在一个方向上加上2到11,另一个方向是2到11号,我们希望所有这些跳转实际上只是表示要跳转的指令数,因为这为我们节省了两个信息。

让我们可以跳得更远,但是,因为我们一直在支持,特别是这里的半指令,我们实际上只能在一个方向上跳转到一半的指令,在另一个方向有一半的指令,这对类似的人来说是真的,至少是类,因为我们处理的不是压缩指令。

但我只想指出这一点,你会看到,上一张幻灯片的答案是什么?答案是12位中间字段以两个字节为单位,就个人而言,就像使用半指令这个词,因为对我来说,但因此,我们仍然保存了一点信息,但是,为了创建字节偏移量。

我们需要将其添加到程序计数器中,我们总是只需要乘以2,这里还有一些其他的音符,为什么另外两个,不是风险五的作用,下面是一些关于设计师想从风险5中得到什么的猜测,其中之一是如果我们只表示12位。

就像字节本身一样,嗯,因为我们的指令总是在4的倍数的指令地址上对齐,较低的两个比特总是为零,所以有效地,就像即使我们有12位信息,较低的两位总是零,我们没有有意义地使用它们,所以如果我们把它截断。

把所有的东西都移过来,说,好吧好吧,而不是处理字节和地板和所有这些事情,如果我们只处理一些指令,这一个不处理这种压缩指令格式的风险五一,所以这有点像金发姑娘的事,但也是一个设计的东西。

风险五号决定用一半的指令作为他们的计数器,这里有一些关于数字的观点,呃,所以这里的意思是,如果你,递增的字节数,在一个方向上可能是正四零九,四个字节到程序计数器,再减去4 0 9,六个字节到程序计数器。

和一个二,所以为什么,积极和消极是不对称的,那是因为我们在这里用2的补数,所以有可能发生在,是啊,是啊,很多,你就像2是一个特殊的数字,所以让我们来看看在B格式方面发生了什么,让我们假设我们正在处理。

呃,所以我们所说的B格式,我们也称某人为类型,你会在课本上看到这一点,对于像以前一样阅读的人来说,所以让我们像我们像,让我们呼吸一点,说我们有RS一个RS两个,这些是我们相互比较的东西,这些是读寄存器。

因此,它们在读取字段位置,机器指令的源字段位置,我们这里有一个操作码,所有这些关闭代码将代表条件分支操作,或者实际上大多数B格式,在这些媒介中,有十二位中间体,我们把他们分开,与S格式非常相似。

因为我们想重用比特的目标寄存器字段,然后我们把这些连接在一起,这个东西不代表字节偏移量,但是半指令偏移了,然后我们把这个乘以2,所以我们实际上可以在一个方向上达到10+,在另一个方向上减去10。

那是因为一个比特是用来表示符号的,正负,然后一个比特用来表示我们需要,我们实际上是在处理一半的指令,而不是完整的指令,你在看这个,你就像这是什么这是什么,管道是这个还是这里发生了什么。

风险五还有一个古怪的地方,那实际上又是,那些漂亮的硬件工程东西之一,所以这个直接字段说的是指令的最高位,这是位索引12,第二高的位索引十,他跳过了十一点,有一秒钟,然后你从索引9到结束索引,以此类推。

以此类推你的直系亲属,突然你跳到这个区域,然后是四三二一,然后你一路往回跳,然后填位索引十一。

是啊,是啊,你就像什么,那么让我们看看它的图片,这里的图片确实表明我们有z,这是位索引十二,这里的索引11,这就是为什么我们有所有这些X,我们有所有这些W,如果我们试图用最小位的偏移量来表示相反的字节。

那里的指数总是为零,因为那是我们乘以2,所以这个底部的图表只是向你展示了,如何构造12位的字节偏移量,即时编码,是啊,是啊,真的真的很古怪,我们稍后会解释为什么,但我想给你看一个例子。

这样你就对这里发生的事情有了更多的内化,这是我们前面看到的程序计数器的例子,我们如何把这个b q很好地包括在内,第一步是,我们一秒钟也不担心眼前的事,让我们填写其他寄存器或其他字段,首先我们有操作码。

那将是B格式,操作码函数字段,那将是B Q都是零,一二好,这些分别是um x19和x10,所以我们把它们编码为数字19,还有现在没有签名的数字10,让我们看看眼前的,所以我试着对它进行了一点颜色编码。

但是第一步是什么呢?第一步是以字节为单位构造字节偏移量,然后我们把它转换成它的半指令版本,那么什么是,这里的字节偏移量是多少,嗯,我们将16条指令向前跳转到最后一条指令所在的位置,或向前16字节。

这是32位指令,好啦,所以只要记住一点数学。

所以让我们代表16个,然后在二进制中使用十三位数字,使用13位,所以我们有一个13位的字节偏移,我们只是代表一个数字,这是十六岁还是这个,这是第四个,指数四打开了,因为这只是,十六加十六的签名版本。

现在我们有了这个编码,现在我们有了这个字节偏移量,让我们把它插到这里的编码中,发生的好事,最上面的一点,那是零指数,十到五,还有零位索引,位索引四是一全零,然后最后位索引十一零,好啦,所以你看到了吗。

这是一个多步骤版本,在这里我们创建了我们跳转的字节,然后我们把它编码到直接字段中。

现在我要回答你们都想知道的问题,或者更确切地说,当我第一次读这篇文章时,我在想,所以做这种旋转的东西,就像我们已经用收银机做了一样,我知道你总是想在同一个地方读登记册,在指令的同一部分。

写在指令的同一部分,当然好,但是这里的直接呢,让我给你看我们目前看到的三种指令,到目前为止我们看到的三种格式,马上就用上了,请注意,这里我已经写好了所有事情的发展方向,第一名,也是I型。

我把这十二块分成上面的七块和下面的五块,我要用同样的字母来告诉你,至少在位置上是相似的,这里有一些我们首先可以看到的观察,如果我们,如果我们喜欢看这些位索引10到5,他们都一样,他们都在同一个指令中。

好啦,所以这实际上对硬件很有用,我们总是知道10个直接的会是指数3,其中一条指令等等等等,同样在底部的皮带上,我们看到1到4位总是在相同的位置,这些都是这里允许硬件的W,如果他们想把钻头。

他们总是可以选择索引的,然后导线是三位索引,然后把它连接到第一比特,以下是其他一些观点,虽然有些地方情况不同,其中之一就是我们所说的符号位,他们很抱歉,让我说这是指令中最高的位,位索引三一。

因为我们从零开始索引,有一件事很有用即使,I型和S型,这是比特索引11,对于bb类型,它是位索引12,有用的一点是,这总是最高的位,这是由指令表示的,这就是我们所说的符号位。

你涂抹的部分立即填充整个三个两个部分,所以这对于硬件在这个位置总是有最高的位仍然很有用,现在有一个B类型有一个13位的表示,因为末尾的隐式尾随零。

就像注意到这就是为什么这里有索引12,在另一边,我们也有一点不同,就是有点七,在f格式中,这实际上是位零,但在B格式中,这是11位,但是,除此之外,中介都一样。

就如何将指令的各个部分连接到你的直接本身而言,这对硬件来说是非常有价值的,那么这里你将看到的编码的要点是什么呢?我们刚刚走过,关于如何从bq格式的字节偏移量到b格式的字节偏移量,到这个即时编码。

你会看到这个编码,它对硬件非常有用,一旦你在项目3中开始连接你的CPU,您将实际看到这个值,但现在你喜欢,你知道的,只要练习一点点,就能流利地使用它,好吗,这些都是格式说明,我不打算再过一遍。

但它在那里,以防你想看。

然后现在我想涵盖接下来的几个跳跃,或者说,呃是的,接下来的几个跳跃是为了让我们这样做,这就是我们到目前为止所讨论的,即条件句,如果是循环,当循环时,所有这些通常都使用分支B格式,通常很小。

所以2到12位的跳跃位置,或者实际上是2到正负2到10的跳跃指令,这是可行的,但是,如果你想跳得更远,让我们说,例如,你有一个相等的分支,然后这远是超级超级远,这个标签超级超级远远超过十个指示,嗯。

您可以使用无条件跳转,所以我相信我们在上一节课上已经看到了这一点,但它不是,我会解释的,所以使用无条件跳转的等价代码,有更多的空间可以使用的是以下内容,而不是检查,如果事情是相等的,然后跳转检查。

如果事情不对等,然后跳近,下一条指令记住如果等价的话,那么您只需将程序计数器递增1,现在在这个指令中,你可以跳超级超级远,好啦,所以这是一种,这是我们看到很多,我们正在做的C代码。

然后我们试着把它编码成多个组装指令。

处理机器代码本身,61 CS金星为你做了很多,但了解原因是有用的,在汇编中实际编写的指令比实际编写的指令多。

让我们来谈谈跳跃,到目前为止你所看到的,跳转链接,可能是个更好的名字,正如链接和跳转所做的那样,它跳到标签上,但在它跳到标签上之前,上面写着回信地址,因此它将以下指令写入您提供的任何目标寄存器。

我们已经看到了一些用例,其中一个确实是对函数的调用,例如,这个J A L是一个放克标签,这将跳转到放克标签,然后还将下一条指令存储到返回地址,命名寄存器x 1,我们刚才在上一张幻灯片中看到的另一件事。

如果你想跳得更远,您可以使用此跳转标签,或c,对不起,其实我们还没有看到,但不管怎样,到目前为止我们看到的另一个是无条件分支,如果你只是想跳到一个标签上,您可以使用pseudo指令j标签。

它有效地对实际指令jl做了同样的事情,但它丢弃了返回指令,是啊,是啊,有一个快速的问题,是啊,是啊,这是正确的,是啊,是啊,所以你可以想想,让我们看看,让我们看看灯板在这里能不能用。

所以你可以认为如果你有一个跳跃,所以嗯就像,假设我们把它放在某个寄存器里,然后我们跳,程序计数器当前位于此指令的开头。

然后我们说,实际上,我们想把程序加四保存在这个家伙身上,是的,我们会在下一张幻灯片上看到,所以也许我真的应该跳到下一张幻灯片,那么这里的解释是什么呢,解释是我们,如果我们跳标签,在这种情况下是机器。

对于机器代码,我们要给程序计数器加一个相对偏移量,然后如果我们要写地址,以下说明地址,然后我们将把当前的程序计数器加4保存到寄存器中,所以这实际上就像,如果你,如果你一直在看参考表,你就像啊。

我终于明白这台电脑的意义了,PC Plus对于所有这些不同的东西意味着,接下来我们看到的无条件分支,这实际上将允许您进一步跳转,对于条件分支版本,让我们看看这个布局,相对简单,从某种意义上说。

J格式布局的全部要点是允许更长的跳转,更长的无条件跳跃,称为J格式,你会看到它被称为uj类型,如果你在看教科书,它已经,操作码和目标寄存器来存储PC,加上4,我在这里放了一个小肿块。

然后它有一个很长的直接,好啦,所以除了寄存器,除了操作码,这是因为这种格式只有一条指令,我们不再需要函数三了,我们有这个20位即时,它像以前一样疯狂地旋转,这又是一种将所有的部分排列在一起。

但这里有一些关于现在可以到达的东西的说明,请记住,以前我们有12位要处理,现在我们有二十个比特要处理,它仍然表示为半指令的跳转,就像半指令的单位,或者两个字节,因此,即使我们有20个比特。

我们去掉一个字节来表示符号,然后我们取一个位代表符号,然后我们去掉一点来表示我们要考虑的这一半指令,当时我们不会看到这样的例子,因为事实证明这更像是,你写偏移量,然后你就像把它映射回眼前。

所以你可能会在讨论中看到一些,当你工作的时候,跳得更远怎么样,你就像至少20块还不够,让我们继续走,以便跳得更远,注意我们到目前为止所做的,在j格式中,我们几乎就像,除非我们完全摆脱注册目的地。

我们实际上已经达到了存储空间的极限,立即进入,因为我们的操作码总是7位,我记得上次有个问题,喜欢好,七位,似乎我们只处理六种格式,就像七个比特,这里发生了什么事?你还记得我说过,风险五有延期。

原来很多扩展信息都写进了这7位,还有RV3 2和RV64,房车一二八,它们也被编码成这七位,所以我们不会谈论太多操作码的来源。

但这只是向你展示了它的位置,所以让我们来谈谈如何存储更多的信息,为了做到这一点,我们必须涵盖新的格式。

u格式如下所示,它被称为u是因为它代表上直接,让我展示一下你看起来很像J格式,是啊,是啊,但现在它不做任何跳跃它,只是一个普通的指令,是什么类型的指令,这里有两个说明,我要介绍,其中一个叫路易斯。

不是国王,但是鲁伊,然后还有一个UI PC,通常是这个首字母缩写,然后这里的其他东西,上直系亲属所做的是,上面真的说有个目的地寄存器,我的目标是更新这个登记册,特别是更新寄存器的上位,那么它擅长什么呢。

直接操作数,或者,让我们说,这里直接的20位,它们实际上代表了你要做的任何事情的前20位,你做了某种手术,然后你把它存储到这个目标寄存器中,注意这里,这完全不同,到目前为止,我们看到的许多其他媒介。

因为这次它不只是移动了一点,但它移动了12位,所以直接的确实代表了上面的20位,因为我们的中间人,至少在这个架构中。

你就像有什么样的手术,嗯,其中之一是简单地将我们使用的即时操作数保存到目的地,这就是我们所说的路易斯,L u i加载上立即看起来像这样的,那么这意味着什么呢,我们创建移动了12位的操作数。

Fait进入目标寄存器,这就是路易斯,有吗,为什么这个有用,它现在终于让我们,经过这么多天创造了一个3位2位的值,上一次我们只能创建一个12位的值,但现在我们可以填满上面的20位。

我们可以创建这个3位2位值,让我向你展示如何,你把上面的20比特或5比特装上,然后你添加到同一个寄存器中,下面的三口,下十二位,就这样了,太完美了,实际上,这就是我们的伪指令李,如果你一直在用它。

这就是它的作用,上面说,啊,如果你必须推入12个以上,下面的十二位,它将添加一个路易,允许您保存这些信息。

你就像,太完美了,这就像这就是我,这是巡航,就像,我甚至不用使用伪指令,就像,我可以只是路易和添加,我和我总是能节省三个两个比特,有一个警告,当然可以啦,但同样,这些警告是美丽的。

那么我们应该怎么设置波巴咖啡馆呢,如果这是我们的八个,呃八点或三点半,两位,立即,我们想储存的,让我们试试我们刚才在上一张幻灯片上看到的,上面的五个咬b零b c,然后加入下面的三口,阿菲,你得到了什么。

哦不,你得到了波巴自助餐,这里发生了什么,发生什么事了,记住我添加了什么,我说你马上就有信号了,因此,因为一封短信,十六进制字母a的最上面的部分确实是,它实际上会把整个事情弄脏了,你真正加在一起的。

在上面的五个小点中,你加在一起,波巴c和减一,然后下面的小点你只是在加零,然后一起,所以你最终会得到什么,你总是在较高的地方减去一个,较高的位,这不是你想要的,那么这里的解决办法是什么,风险五,好的。

好的,你知道这是合理的,你知道我们不想改变我的工作方式,因为我们总是希望加i正确地扩展,所以我们要在我们的LOI中添加一个,这是我们的目标,创建常数时,所以我们总是在上面加一个,如果我不总是这么说。

如果我们知道较低的位,它将在这里被分配编号,然后我们在上面加一个,然后标志的东西会自己解决。

你就像,我永远不会做路易和阿迪,再一次,这是正确的,所以这张幻灯片的要点是用低即时,伪指令将向下编译到正确的,或者我们将组装到正确的路易,并根据需要添加眼睛,然后你就不用处理了,你就像没事一样,嗯。

如果我们总是马上装货,为什么你要给我看幻灯片,你将在项目中看到的一件事,实际上在这个项目中,现在您必须调试您的机器代码,一次,如果你看到一个随机的路易,如果你看到一个常数,这似乎不是你要做的常数。

你想回头看这些幻灯片,好啦,汇编程序正在做一些事情,实际上允许我编写我的汇编代码,我想要的方式,好啦,再等几分钟,我们将再讨论一个概念,AP C然后最后一跳,漂亮的跳转和链接寄存器,仍然是U格式。

这是我不想给你看的东西,丹,我不想像上周那样给你看,因为这实际上是处理程序计数器本身,将程序计数器存储到目标寄存器中,好啦,你还记得今天刚开始上课的时候,我就像程序计数器,就像墙上的日历。

然后你必须使用的所有寄存器都在这里,UI PC复制日历,向其添加一些信息,然后把它拍在你的桌子上,所以它是这样使用的,如果要增加程序计数器,比如,如果你想添加一些偏移量,并将其存储在x5中。

你可以在实践中做到这一点,最常见的用例是在PC上复制,就像你现在拥有的那样,好啦,所以你可以在这里看到,如果您添加了,如果你提供即时的零,很自然,这就像把零的上位和零的下位相加。

然后真正存储当前程序计数器,这是你在X5的标签上的地址,所以这是一种打开盒子的方式,你在程序中的位置,对J有用,R。

今天最后一件事,我知道我们经历了很多,但希望这会像,对你到目前为止所做的所有风险五鞠躬。

跳转和链接寄存器,这是我们见过的最后一个,我记得上周丹尼尔说,有很多问题,就像这两者有什么区别,为什么你会用jl和jr,让我们提醒你一下格式是什么,J a l r做的事情和J a l很相似。

但现在不是有一个程序,这是更新程序计数器的相对偏移量,它说不,是呀,亲戚从RS中得到实际地址,得到所有的三个两个位,根据需要添加相对偏移量,然后更新程序,节目遭遇,所以它真的在做绝对的寻址事情。

我们在刚开始上课的时候,它仍然做第二件事,所以它仍然将回信地址存储在,或者就像你知道下一个指令是什么,它仍然将其存储到注册目标中,但希望你能明白这就是为什么这里有一个额外的论点。

因为它没有从电脑上得到原始指令地址,它从rs1获取指令地址,到目前为止,我们只是在返回方面看到了用例,但现在希望你能明白为什么,果然转好了,因为它真正的意思是这个伪指令jr返回地址,下一条指令。

我不在乎下一条指示是什么,但把电脑更新为我的回信地址,加零。

I格式看起来很简单,嗯,事实证明,您只需使用i格式,但它有一个不同的操作码目的地,立即注册源注册。

我只想结束这最后一张幻灯片,不像JL只能跳转20位,J a r实际上可以让你跳得更多,因为你可以创建完整的3个2位地址,然后跳,所以祝你周三愉快。

今天星期五办公时间见。

P17:Lecture 13: Compiler,Assembler,Linker,Loader - 这样好__ - BV1s7421T7XR

好啦,欢迎回到61 C。

这是正确的,今天是星期五,因为是星期五,而不是丽贝卡·布莱克,我们有卡莉·雷·杰普森,因为我们今天要讨论一个叫做call的东西,c l不代表cal,即使它可以,它也代表编译程序集链接。

最后有一个L,代表装载,但在我们开始调用它自己之前,我想揭露我们一直在说的一些事情。

每隔15分钟左右,但没有明确,现在我们要明确地说,伪指令的概念,所以对你们很多人来说,当你处于危险5时,使用金星模拟器,您可能正在使用伪指令。

因为它们对你来说更容易,作为人类编译器将这些指令翻译成C。

所以我们在左边。

我们有一些伪指令,我没有把它们都列在这里,如果你有兴趣看所有的,你可以看看这些说明书的参考卡,你觉得怎么样,真正的指令是。

换句话说,这些伪指令就在那里,为了,对于编译器,谁用汇编语言写东西是为了用更容易理解的方式写东西,但它们实际上并不对应于具有操作码和功能的特定指令,它们实际上对应的所有东西就像真正指令的快捷方式。

让我告诉你我的意思,我们要跳过,我们将跳过这个练习,我要明确地向你们展示一点,让我们把上面的前两个放在这里,我会试着用。

还是,是啊,是啊,好啦,是啊,是啊,是啊,是啊,我做到了,我做到了,所以我们要试着看看前两条指令。

这是为了帮助在线的人,同时试着用我的尺子,所以如果我们看看这里的前两个指令。

移动和不记得什么丹说,移动是说你会引用引用,将RS的一个内容移动到ARD的内容中,但实际上它更接近于复制,所以在真正的指令中,它实际上是一个添加即时指令。

所以它说嘿零,r 1的值的直接零点。

然后储存到RD中,目标寄存器,同样不是RS,储存在我们的数据库里,它实际上会立即变成XOR。

所以你可以看到我们是否记得,我们的中间人是如何工作的。

那么我们的X商店是如何运作的,它的意思是取r和xor与负1,什么是负一和在二的补语中的符号。

都是一体的,当XOR和一个XOR在一起时,它会做什么,上面写着好的,嗯,在RS中的一切在RS中的一切,如果是,我们就把它降到零,如果是零,我们要把它翻到1,这就是结是如何作为伪指令工作的。

然后再一次作为真正的指令。

我们有更多涉及的版本,现在你可以看到这是一个加载即时指令,让我们看看它是否有效不,不是从这边,我只能在观众席的这一边,所以如果我们看一下加载即时指令,这个李,它实际上变成了两个变成了两组可能的真实指令。

左边的一个说得很好,如果它适合12位的话,添加I的中介,我只是要用一个添加,I与x零,然后存储到目的地,好啦,这就是加载即时版本,但是。

如果大于12位,那是因为我按错了按钮,如果大于12位。

然后我将立即使用负载上,后面是一个广告I,负载在哪里,立即将前20位加载到目标寄存器中,然后加i,然后通过更新,寄存器目标的其余部分也具有较低的12位,接下来我们有跳转标签和跳转寄存器。

这些解析为跳转和链接x零标签和跳转和链接寄存器x零寄存器,再次唤起你的记忆,关于JL做什么和R做什么,他们更新程序计数器,然后在更新程序之前,它们还存储下一条指令,程序计数器会去哪里,加四,目标寄存器。

好啦,在这种情况下,因为没有目的地寄存器,我们把它存储在,这意味着我们只是放弃了回信地址,相反,我们唯一要做的就是更新,那么有什么区别呢,然后在跳转和跳转寄存器之间,跳转标签使用当前程序计数器的偏移量。

这就是我们所说的PC相对寻址,而跳转寄存器使用寄存器中的三个二位值,这就是我们所说的绝对寻址,你可以看到,我是说,也许你可以考虑一下,每样东西,对于PC相对偏移量,你被限制在20位。

但你也是相对于程序计数器,这是伟大的,然后是收银机,绝对寻址跳好,你可以用这三个二位,但你得把这三两部分装上。

你必须确切地知道你想跳到哪里,我们会稍微谈谈这个,在下一部分,在今天剩下的时间里,最后喜欢的两个可能没见过,所以我要明确地把它们说出来,让我们假设我们想加载,但不,你做不到,不是很刺激,好吧。

我学到的是,这是我的鼠标,力量,好啦,所以我们为什么,嗯,所以这个加载地址,我们是说我们想把标签的地址加载到寄存器目的地,然后有两种方法可以做到这一点,取决于汇编程序决定如何将您的地址加载到。

其中之一是明确地把所说的地址,这就是为什么它看起来与立即加载版本非常相似,所以你会立即做一个加载,再加上下面的12位,另一种可能,我们稍后会讨论这些,我可能想做一个PC相对寻址,所以它会说,哦耶。

标签实际上是这个偏移量,或者这个地址可能就像偏移量,实际上我将从U PC开始,所以我会加载当前的PC,然后我会添加任何信息,嗯,那些较低的12位从PC上偏移,所以这里应该说偏移量而不是地址。

我把它固定在幻灯片上,最后是最后一个呼叫标签,这也经常被一些编译器使用,可能是人类编译器,可能也是编译器,我们的机器有风险,这里有五台机器,它也会有效地跳跃,它只是不会跳到一个遥远的标签上,因此。

它再次解析为PC相对地址,加上一些加法和跳跃,好啦,所以你可以看到,这里有一些不同,它简单地解析为对调用标签的跳转和链接,加载地址,PC相对地址并更新PC相对地址,然后调用链接寄存器中的跳转。

我只想把这个放在幻灯片上,因为当您查看代码时,您将看到它,您可能不使用call,但是你可以看到一个伪指令是如何改变它的,两条伪指令,今天我们要讲一个叫做call的过程,实际上是仔细想想。

它是翻译和运行程序的过程。

我是什么意思,我说翻译好是什么意思,让我们来看看我们现在所处的位置,就我们的硬件抽象而言,就我们的海龟而言,我们现在所处的位置,但在最上面的是我们已经经历了所有的前三层,这么高级的C语言。

我们已经通过了这种汇编语言,最后,现在我们很好地处理了机器代码,如果你仔细想想,如果你喜欢,后退一下,电脑必须为你做这件事,从某种意义上说,所以从来没有像,我是说,至少在这个例子中,我们有一个。

我们有一个人类,我们所有直接将C代码翻译成程序集的人,然后把组件翻译成机器,但两个世纪的力量在于,我们有电脑为我们做这件事,我们今天要讲的是。

我们如何做到这一点,这将是一个非常高的水平,但希望这能激励你选修未来的课程比如1262,64个操作系统和编译器,因为这就是一切,所以让我们来定义翻译,首先,翻译是简单地将程序从源语言转换成另一种语言。

通常你想转换成一种较低级别的语言,因为这允许更高的效率和性能,至少它允许您有更多的选择来提高效率和更高的性能,这里有更多的可变性,所以在这种情况下,您从C到程序集再到机器代码。

我只想把这个和,到目前为止你见过的其他一些语言,尤其是蟒蛇,嗯,它是一种解释语言,好啦,从某种意义上说,Python的默认是,那是什么意思,这意味着您直接执行Python语言,嗯。

而不是把它向下转换再向下转换,然后用一些机器码版本,这里有张纸条,所以我们经常说,就像复合这个词一样,C是一种编译语言,C也可以解释,风险五也可解读,这只是事情执行时会发生什么的问题,例如。

你们正在使用的金星模拟器,Venus Risk Five模拟器实际上并没有将组装翻译成机器代码,然后在你的机器上执行,其实这只是潮流,就像看你的风险五,因为它在运行,然后向你展示模拟可能发生的事情。

所以这是一种解释器版本,如果你对这方面的更多信息感兴趣,这种分化,丹有一个很棒的录制视频,我已经把它贴在今天幻灯片的末尾了,我还把幻灯片贴到课堂上,所以你可以在更新的在线中看到那些,PDF。

今天我们将多次重温这个图表。

但这就是我们所说的过程。

好啦,翻译和运行一个程序,那么如何从一个C程序到运行所述程序。

嗯,首先你编译,好啦,所以这是这里最上面的蓝色选项。

让我们看看它是否有效,是啊,是啊,是啊,是啊,好啦,所以这个蓝色箭头,那是编译器。

编译器所做的,如果我们仅仅从输入输出的角度来考虑,它接受一个C程序,它输出一个汇编程序,在这种情况下,我们的组装程序将处于风险五,那么呼叫的A部分是什么。

那是装配工,所以汇编程序所做的就是把汇编程序,它输出机器代码程序。

然后链接器接收机器程序,然后输出一个可执行的机器程序。

那么这里有什么区别呢,你就像,好啦,嗯,为什么有汇编程序和链接器,嗯,有一个想法是,当你建立一个程序时。

让我们假设一些涉及字符串的事情,你调用像sten这样的。

或者您还调用printf,所以您使用的是标准库,那些图书馆住在别的地方。

它们是在其他地方预先编译的,然后你把它们融入,链接器是将它纳入,它为您提供了一个单独的程序来运行,运行一个可执行文件,所以这是of的输出,连接器是允许所有东西混合在一起的东西,很好。

当你把它加载到内存中时,最后一个电话,你只需执行一个文件,所以这里要注意的是,我们经常说将C编译为二进制,我们今天学到的是,实际上这指的是前三步,所以从c语言到汇编,到机器上,然后还有机器代码。

然后在预编译库中链接。

让我们从第一步开始,第一步其实大家都很熟悉。

从某种意义上说,我们将在第一步上覆盖一张幻灯片,这太棒了,所以这里又发生了什么,输入是那种你有高级语言代码的东西,假设foo c,然后输出,你组装。

然后你输出你的编译器的食物点,它可以是海合会海合会是为我们的蜂巢机器,所以它真的被编译成x86语言。

但对61年的我们来说,看看我们所做的是我们让人类作为编译器。

因此人类,人工编译器通过一些,一些人为优化,这里的一些人类算法,注意通过这个fos的输出,风险5中的汇编程序可能包含伪指令,因为这一切都是关于编译器如何看待c程序。

然后把它转化为有用的东西,关于编译器如何看待程序。

逻辑,就这样,回来吧。

很快回到这张幻灯片,如果你对其中很多是如何工作的感兴趣。

因为再一次,我认为你们现在面临的挑战之一是,对你来说,思考如何写作是相对简单的。

你看到的很多节目,现在想想风险五。

想着什么时候分家,什么时候跳,什么时候调用所有这些东西,那有点古怪,如果有一种方法可以自动化,那将是非常棒的,因此,我真的鼓励很多人选择CS 164,您可以构建自己的编译器。

您可以理解这些高级语言的结构。

更多,这将是一个好时机,好啦,汇编器。

现在我们进入第二步,你可以再看到一次,我们在一个非常非常高的水平上思考这个过程,但这应该是所有风险的一个很好的总结,到目前为止我们一直在做的五件事。

如果我们考虑这里的汇编程序,让我们回到输入输出。

所以输入是汇编语言或汇编指令程序,然后输出是一个机器语言模块,我们叫它模组,因为它不像一个可执行程序,但它通常在延长线上有一个点。

然后它有机器代码在这一点上实际上是二进制的。

好啦,所以你可以打开它,用人类的格式阅读它,都是以比特和字节为单位的。

这就是所谓的目标代码,所以如果你听到我说,目标代码和二进制代码是一样的。

我可以互换使用这些,它不仅包括机器代码,所有指示的翻译,装配说明,但它也包括我们所说的链接和调试的信息,它被进一步传递到过程中,我们会谈论所有这些事情,它们的意思是。

汇编程序具体要做什么,我刚告诉你输入和输出,它和什么东西配合得很好,它与这个想法是一致的,称为指令,你可能已经在一些实验室里看到了,我们今天要解释一下,然后更进一步。

因为它试图在这一点上输出实际的机器代码指令,这就是它将替换伪指令的地方,我们今天上课的时候说过,变成真正的装配,再转换成机器码,祝福你,所以让我们稍微考虑一下指令,所以让我来介绍一下高层的指令。

所以当你在实验室里看到它的时候,你就像,好啦,我明白这是什么,当你在项目上看到它,你明白是什么,以及如何使用它们,这些通常是作为从编译器到汇编器的注释生成的。

他们不生产机器指令,但是它们告诉如何构建对象文件的不同部分。

我这么说是什么意思,在座的很多导演,如果你查出来,他们说像,啊,然后文本后面的任何东西,还是没有,我做不到,文本后面的任何内容都是您的机器或组装指令,然后类似的数据点数据,点数据之后的任何东西。

这些是您希望放入静态数据段的内容,好啦,所以这些都是,当编译器在查看C代码时,它会标记东西,移动东西,然后生成这个程序集,它说文本,所有这些说明,然后数据,所有的内容都在这里,还有一些其他的标签。

我只是想指出,这里有一个全球符号,所以符号,可能是像梅因这样的东西,可能是一个,可能是另一种标签,它只是说这个符号将是全球性的,以防其他程序想运行它,这就是为什么你会在项目中看到它说,哦耶,声明全局主。

因为如果你说主要的指令,那个主标签放了像,它被标记到一条指令,如果那个东西可以被其他程序访问,然后另一个程序可以运行你的伴侣,因为它知道自己在哪里,然后这里还有一些其他的,这些通常用于点数据。

所以点字符串和点单词,这就说明了这一行后面的一切,这是我想存储到数据段中的字符串,或者这些是我想存储到数据段中的单词,这有点像你的参考幻灯片,我喜欢思考指令的方式,这就是我喜欢思考标签的方式吗。

所以如果标签是一种指示的标签告诉你,就像地址一样,就像记录那些指令的地址一样,点文本和数据有点像路标,好啦,就像现在我们开始,我要告诉你所有的说明,现在我要告诉你们所有需要发生的数据,好啦。

所以这有助于汇编程序更好地解析程序集文件。

那么这个目标文件包含什么,它将包含六个主要部分,所以这个目标文件是foo。

汇编程序的输出,其中三个对你来说应该是相对合理的,如果您正在考虑如何编写程序集,这大致是有道理的,在好的意义上,第一个是标题,你们中有多少人写了一个,像以前的研究项目,我不得不喜欢,穿上,像封面一样。

或者像目录一样,标题就像目录,类似的事情,就像嘿,我要把这份报告发出去,将此目标文件发送给下一个人,我会告诉他们,就像,一切都在那里,因为它都是二进制的,它将包含一个文本部分,所有的二进制编码。

所有指令的机器码表示,此外,它将包含一个数据段,也就是所有的机器表示,数据的二进制表示,静态数据寿命,好啦,所以再一次,当我们考虑静态数据时,我们在想什么,这些都是宣布的事情,使许多程序可以访问它们。

嗯,在文件的顶部,全球数据,全局变量。

然后现在有了这些类型的事情,好啦,如果这些是汇编程序将要有的输出。

它需要什么,那么如何创建此文本段。

嗯,在过去的几次讲座中,我们一直在研究这个问题,所以我们一直在研究汇编代码,然后将其翻译成机器指令。

让我显式地向您展示汇编程序是怎么做的,第一件事是因为它的目标是将组装指令更改为机器代码,让我们考虑一下类别,不同风险的格式,到目前为止,我们看到的关于格式和算术的五个指令,I格式化。

所以当你在做算术或逻辑指令时,使用寄存器和中介,把所有这些类型的东西,所有东西都被编码到组装指令中,把它翻译成3个2位的机器码指令,所以说,例如,如果我加x18x18x10,嗯,光是看这四条指令。

你可以确切地知道操作码应该是什么,什么有趣的三个,什么恐惧,七个字段是,所有这些东西其他格式呢。

我们上次一直在谈论树枝和跳跃,事实证明,PC的相对分支和跳转也可以翻译,但这里还有几步,所以为了改变,让我们说,J标签进入机器代码。

三位两位机器指令,我们首先要把它从伪指令转换成汇编指令,然后我们得弄清楚标签在哪里是对的,然后我们找出标签在哪里,然后我们计算当前指令之间的偏移量,在凝胶X零标签处,标签将在哪里。

然后我们用半字来编码偏移量,嗯,那么我们为什么能在这一点上做到这一点呢,这就是我们所说的位置无关代码,所以记住,前面我说过,汇编程序之后的下一步是这个叫做链接器的东西。

它将一堆库和编译的东西组合成一个巨大的文件,有可能因为这个巨大的文件。

这个代码块的位置会移动一点,这有点吓人,但如果我们用PC相对偏移量,我们将有位置独立的代码,它总是相对于这个指令编码的地方,所以这实际上是我们翻译一些东西的一个很好的方法,现在在汇编程序中,再深入一点。

如果我们考虑我们实际需要计算的,将所有这些标签转换为相对指令偏移量或半字偏移量,我们能一次完成吗,因为我们又喜欢,如果我们在想,如果我们在考虑建造一个完美的装配器,我们希望它尽可能快地运行代码。

尽可能少地生成机器代码输出,答案很不幸,我们不能做一个任务,但我们可以做两个。

让我告诉你我的意思,让我们假设我们有以下代码,好啦,所以这里是一个for循环。

没有。

行不通的,我要用我们的鼠标,所以如果我们,如果我们仔细想想,这个循环就在这里,它是一个for循环,我是说我在用C术语,但实际上是一个集合小于一个集合小于分支等于,然后跳,它想做什么。

它是说我将从t 2等于9开始吗,我要看看t 2是零还是大于零,如果它不大于零,然后我们完成了循环,我要退出,我要跳到出口,如果它仍然大于零,然后我要减少它,通过增加一个负数来增加它。

这就是那个循环所做的,如果我试着计算和翻译,组装到这里的机器代码中,嗯,我一到b q出口,所以这里的第三行,我其实不知道出口在哪里,因为我喜欢,也许我只是这是我第一次通过代码,我不知道出口是指示。

一二离当前指令有三条指令,或者六个半字之外,但是,如果我再经历一次,然后我就可以像记录出口在哪里,然后再回来,然后输入并替换这个出口和b q来代替实际的偏移量,注意,对于落后的人来说,这是可以的。

所以如果我垂直地浏览这段代码,当我到达J环时,我已经看到循环标签在哪里了,它指的是哪条指令,因此对于负偏移,还可以吧,让我总结一下,树枝和跳跃,所有这些事情,因为我们可以有正负抵消。

正偏移意味着我们跳转到代码,我们可能还没有看到,但是如果我们把所有的代码都检查一遍,然后我们就看到了所有的代码,所以如果你能把信息记录在某个地方。

我们可以把它记录到所谓的符号表中,然后我们再看一遍所有的信息和说明,然后插上所有的偏移量,因为我们以前见过所有的标签,所以这是一种两通系统,这就是大多数汇编程序的工作方式,好啦。

所以这告诉了我们一点如何翻译,可能有百分之五十,或者实际上它接近我们指令的75%,所以我们有算术指令,逻辑指令,我们有这些类型的分支指令或跳转,它们是相对于程序计数器的,还有哪些其他类型的指令,嗯。

上次课结束的时候我喝了几杯,假设对其他文件的引用,假设您想调用或跳转到printf,偷什么的,这些不是功能,或者这些不是您正在编写的特定用户程序中的标签,有其他程序的标签,假设UNIX开发人员。

所有这些类型的事情,嗯,那是个问题,另一个问题是,还有一些事情我们还没有真正讨论过,就像对静态数据的引用,如果您想加载全局变量的地址,你是怎么做到的,这就是所谓的绝对寻址,因此,这是我们需要的东西之一。

实际上,这个变量在内存中的绝对地址,才能装进去。

能够真正翻译机器,或将组件转换到机器中,指导。

那么这里的重点是什么呢,这里的重点是,在程序集的这一点上,这两个都不能确定,这就是我们所说的对象模块,对象文件模块,因为它不像整个项目,如果我们考虑到对其他文件的引用,这里实际上是第一个。

我们只是不知道其他文件的二进制文件是什么样子的,所以我们实际上不能告诉你这些地址在哪里,然后第二个是静态数据,我们不知道,如果我们稍后链接的其他文件也有其他静态数据,所以这些地址可能也会被移动。

所以汇编程序所做的是,上面写着,好啦,嗯,我试着把我能把的从装配到机器,然后这里有一些缝隙,所以下一个排队的人,你能帮我翻译这些吗,这是帮助你翻译的信息,所以汇编程序提供的两条信息是,搬迁信息。

哪个是桌子,然后是另一个叫做符号二的表。

因此,这些也作为对象文件模块的一部分包括在内,传递给将在这里制作可执行文件的人。

好啦,那么让我们来看看这两件事是什么,我有两张幻灯片,第一个是符号表。

符号表实际上是文件中的项列表,另一个文件可能会发现有用,首先,任何说明书的标签,假设在上一张幻灯片中,我们有一个跳跃循环,然后我们有一个循环标签,我们有一个出口标签,这些是符号表中的标签。

然后你就会有相应的地址,至少汇编程序认为的是地址,它还包括数据,所以点数据部分的任何东西,任何全局变量,所有这些东西都在那里,记住有一个全局指令,它还将包括其他程序是否可以访问缅因州,所有这些类型的。

还有一张表听起来和符号表相似,但有一点不同,这就是所谓的搬迁信息,这类似于该文件需要的剩余地址的待办事项列表。

所以说,例如,如果跳转到外部函数。

它会说,哦耶,在这个凝胶指令中的跳跃,我其实需要,我填不进去,就像,你能帮我填一下吗,所以有点像,你知道在谷歌文档上,对于那些正在使用谷歌文档的人来说,你好像加了点评论。

这就像一个广告评论类型的东西在这里,您可以准确地知道以后需要编辑哪一行,它还包括对无法访问的任何类似数据的评论,因为,好像你不知道是什么地址,所以你想做,请填写这个全局变量的地址,你可以看到,有符号表。

如果我进入下一张幻灯片,幻灯片上的第四个,这是符号表吗,上面写着,好啦,这是所有的标签,这是我认为这些标签在的所有地址,包括全球,数据段变量,这些东西在什么地方?这就像我所想的我所想的事情。

然后搬迁信息就像,好啦,这些东西我绝对不知道它们在哪里,我希望你回去修改这些特别的说明,所以你可以把符号表,标记变量,重新定位就像指令地址,以及需要更新的内容,是啊,是啊,中间有个问题,啊,问得好。

这是否意味着标签名称在不同的文件中必须是唯一的,奇妙的问题,所以记住,有一个全球指令,这将允许您隐藏一些标签,但在大多数情况下,至少在您使用的单个文件中,你需要有独特的标签,所以如果你有喜欢。

在2号线上循环,然后在99号线上循环,我想通常装配工会很困惑,是啊,是啊,还有一个问题,哎呦,是啊,是啊,问得好,静态部分和数据部分有什么区别,他们是同一个术语,是啊,是啊,这是个好问题。

静态和数据的思想也是如此,我们通常把它们称为相同的片段,这就是数据存在的地方,然后我唯一要对比的是文本,这里的段和文本表示说明,所以每当你听到静电和数据,这些东西通常指的是同一类型的片段。

但就这部分而言,嗯,那些数据可能以不同的方式访问,取决于它在C中的声明方式,这口井的问题不在。

哦耶,这里还有一件事,所以呃我记得,我记得我说过有六件事我们讨论了前五件事,这里的最后一个叫做调试信息,所以这通常很有用,如果你用gdp之类的,它只是有关于这个东西是如何编译的信息。

或者这个东西是如何组装的,它是用什么组装的,这对于以后的调试器来说通常是非常有用的,哦好吧,这最初是C代码,这就是它看起来的样子,这是一种额外的信息,在这个目标文件中,如果你对这到底是什么样子感兴趣。

你可以看看这个,呃,这个名为audump的命令行工具,嗯,但是如果你把它用在蜂巢上,虽然,请记住,蜂箱上使用的组件是x86,六十四,这就是ISA,所以它看起来与所有的风险五略有不同,你一直在做的事。

但片段大致相似,谁会没事,链接器,所以现在我们在翻译过程的第三个字母。

实际上,这是翻译的最后一步,在我们开始跑步之前。

如果我们回到这里的目标,它接收机器模块,所以这些带有符号表和重新定位的信息,所有这些,它输出一个可执行或机器语言程序。

我们称之为,链接器的一个很酷的地方是,至少我们在这个成本中引入它的方式,它是否允许单独编译文件,我说那口井是什么意思,如果你看看这个图,我们有这个机器模块,然后我们可能还有一个标准库。

或者像一个lib点或类似的东西,这些东西可以被编译,或者类似于单独编译和组装,然后连接器可以在最后一步将它们连接在一起,在它创建可执行文件之前,节省了很多时间,例如,也许如果你只是想编译,你好世界。

运行那个程序,也许您不想重新编译整个Linux源代码,你知道,因为它就像两千多万行代码,所以有点像,好啦,那东西是预先编译好的,我要把它连接到,允许我运行我的简单的小用户程序,这里的一些老字号。

可能会让你想起,链接器的作用,它被称为链接编辑器,因为它实际上编辑了跳转和链接指令中的所有链接,好啦,所以这就像是使用了搬迁类型的想法,我给你看一下图表,更详细地介绍一下链接器在做什么。

让我们假设这里有两个不同的文件。

把一个点O归档,然后把两个O归档,这是两个不同的对象模块,链接器所做的是获取这些文件,这些文件有一个文本段,数据段,还有任何关于搬迁符号的信息,报头,所有这些东西,它输出一个文件,它的方式。

这是首先将所有的指令或所有的文本段组合在一起,它把它们放在一个特定的顺序。

所以也许按照这个顺序,特定的链接器想先做一个文件的文本段。

然后文件2的文本段。

它对两个数据段做同样的事情,所以再一次,也许它确实像文件一的数据段和文件二的数据段,将它们连接在一起的链接。

然后把它们打在最后一个程序的一个点上,最后在最后,也许它聚合了所有的信息,就像符号表,标题所有这些东西,然后创建这个额外的信息,可执行文件的一部分,是呀,有个问题,是啊,是啊,是啊,是啊,问得好。

所以这就像,好的,好的,为什么这些信息还在这里,如果它已经链接在很好的问题上,事实证明,我们在这里不会讨论太多细节,但事实证明,对于您拥有的可执行文件,你仍然有一个符号表,上面写着。

好啦,这些都是可以访问的标签,因为这考虑到了,就像一个未来的程序想把你的可执行文件链接到别人身上,你知道就像他们,他们也可以用这种方式联系起来,此外,加载程序和下一步将需要,文本段开始的位置。

数据段开始的地方所有这些,所以你还需要封面,就像你仍然需要一个目录,是啊,是啊,问得好,好啦,所以我们在科技领域,我们在数据区,我们把它们放在一起。

但现在我们实际上需要编辑所有的说明,或者编辑我们所有的引用,所以这是我们解析引用,检查,是啊,是啊,我们有一大堆谷歌评论要做,然后我们要检查每一张搬迁表要做的事情,然后修复每一条指令中引用的地址。

那么我们需要影响哪些地址,那么好吧,让我们考虑一下,我们有三类指示或地址,我喜欢考虑。

其中一个就像,它们都是根据与它们相关的不同类型的指令分组的。

第一个是PC相对寻址,第二个是外部引用,然后第三个是静态数据引用,所以实际上回到前一个问题,你可以看到我在同一个句子中使用了static和data这个词,好啦,所以他们有点像,在这里可以兑换。

所以对于PC相对寻址,我们需要更新这些地址吗,答案是否定的,因为它的位置是独立的,好啦,那么我这么说是什么意思,所有这些分支指令,所有这些与PC相关的东西都与特定的指令相关,以及它的位置。

所以如果那个特定文件的整个文本段只是向这个方向移动一点,这个特定文件中的所有分支仍然相对于它们所在的位置,好的,好的,所以即使绝对地址移动了,这个巨大的指令里面的这个巨大的指令集,相对偏移有一个好的。

所以,我们其实在这里很好,我们不必编辑这些,然而,外部功能地址。

是呀,我们确实需要这些,因为在组装的时候,我们不知道外部文件的地址。

所以我们甚至不能计算相对偏移量,因为我们不知道两个方向能跳多远。

所以经常,虽然我们通常有这些作为跳转链接,或者一个带有DLR的U I PC,所以就像跳入链接会跳得很远。

然后是一个从寄存器文件跳转的Uipc,对于一个跳得更远的寄存器来说。

最后我们有静态引用。

假设你将数据加载或存储到全局变量,因为静态数据可能移动了,因为再一次,您有点像将数据段和文本段连接在一起,这也可能是移动的。

所以数据片段,也许你也得编辑这些。

在这里再深入一步,您需要在每个机器指令中更新哪些类型的位,我刚刚给你看了几页。

可能还有一些不在这里,其中之一是j格式,因此,如果您正在跳转并链接到外部文件,您需要更改相对偏移量。

所以你需要改变所有上面的20位指令。

货物和库存呢,嗯,如果要加载并存储到静态数据段中,您可能会使用所谓的全局指针,好啦,所以如果你愿意,看看你的参考卡,有一条很小的线写着全科医生,这是你无法很好地接触到的东西,事实证明。

你可以把它作为指导的一部分,所以我们在这门课上不会过多讨论全局指针,只要知道它指向数据段的位置,这就是你可以用来作为相对偏移的东西,你想编辑的其他东西路易斯,添加I用于外部跳跃的东西。

我还没有把它们包括在这张幻灯片上,但最后又一次,有条件分支,这些b型指令,这些不需要编辑,因为他们都是电脑的亲戚,它们都是同一文本段中的小跳转,然后连接到这个更大的文本段,所以解析引用。

关于装载机的更多细节,因为它总是关于链接器,因为这就像是,哦耶,现在我得考虑所有这些不同的图书馆,真正发生的事情,是风险五吗,链接器假定文本段从这个特定地址开始,再发一条短信,当我们谈论虚拟内存时。

再过几个星期,链接器提前知道什么,是不是有点像模拟,文本和数据段将在哪里,所以它知道每一个的长度,每一个都来自阅读标题,它知道每个文件的顺序,然后计算要跳转到的每个标签的绝对地址。

然后解析引用,所以它查看每个重新定位表,它现在有一个巨大的不同地址列表,然后如果在这个特定的重新定位表中找不到它,或者这个符号符号表,它去了另一个图书馆,然后上面写着,好啦,嗯,也许符号就在这里。

然后如果它不在那里,然后它转到另一个库,可能符号就在这里,所以它通过所有这些东西,然后找到正确的地址,呃,这个文件正在查找输出,这将是我们之前看到的可执行文件,所以它会有一堆文本,一个巨大的文本段。

将所有编辑后的重新定位地址放在一起,一个完整的数据段,然后在一个头调试信息符号表中,所有这些东西,原来如此,呃在片场,从某种意义上说,这就是我们所说的风险,五个,就我们如何看待静态链接而言。

我的意思是静态链接是库,假设标准库或字符串库,它实际上并不完全是可执行文件的一部分,因为我们把所有不同的字符串函数,即使是我们不需要的,然后把它们塞进去,因为我们只是连接在一起,所有不同的文本片段。

这里所有不同的指令,这是相当大的,总体来说,如果你想到像,怎样才能真正喜欢,如果每次你想打印f,你必须包括所有的标准,我做了件大事,嗯,但这里的优点是可执行文件是自包含的。

所以即使你把它移到另一台机器上,嗯,仍然像,知道如何读取机器代码,至少您需要的所有不同的库文件都包含在同一个编译的二进制文件中,编译后的可执行文件,这里的另一种选择是所谓的动态链接库。

所以你可以看到旁边有一张小桌子。

或者实际上是一张相对较大的桌子,所以动态库,动态库中的D,代表动态而不是静态,这就是当今用户计算机的共同点,好啦,所以我的意思是动态链接的库,假设我只在运行时链接,因为我不知道我不想包括整个可执行文件。

所以我只是要链接,并有这个额外的公开开销,当事情发生时,所以利弊,大部分是专业人士,几个想想就有点吓人的缺点,就存储程序而言,需要更少的磁盘空间,因为现在可执行文件只是用户程序的可执行文件,也许再加点。

就像在运行时稍后连接的字符串上晃来晃去,因为它的磁盘空间更小,把程序发送给别人会花更少的时间,把程序传送到机器上,同时执行两个程序,如果使用相同的共享库,它们将需要更少的内存,挺好的。

但一个大骗局是是的,的确,现在开销很大。

因为您需要在执行时动态链接,这允许我们做什么,虽然是合理的升级处理,所以我这里的意思是,如果库x y z更新了,您只需要更新该库的编译版本x y z,然后所有使用这个特定的程序。

他们使用这个特殊的模块不必更新自己,因为它们都可以查看相同的外部lib x y z二进制文件,那正在发生,现在请注意,让程序可执行已经不够了,您现在拥有了所有这些依赖项,所以这台机器需要有特定的生命。

X,Y,Z,所以,然后这个,然后这个,以此类推,你不能只给一个用户程序,然后期待它会运行。

它首先需要有所有这些动态链接的库,但是,最终,它真的是流行的方法,我们的个人电脑的很多方式,我们的个人电脑是今天写的,这不是唯一的方法,就我在这里所描述的意义而言,就像机器码级的动态链接。

所以当可执行文件执行时,嗯,但无论如何,这也有很多好处,我们这节课就不讲了,只是想把它熄灭,就像你会看到的那样,你会看到DL这个词,现在你知道这意味着什么了,好时光,好啦,装载机,我们快到了。

所以装载机。

呃,这是最后一步,翻译完了,现在是运行程序的时候了。

什么是输入或输入是可执行的,我们的输出在括号中。

就像我们运行程序,或者像这里记忆中的任何东西,这里有几个音符,所以当可执行文件运行时,加载程序确实将其加载到内存中。

这是装载机的一个大想法,因此,什么是加载器,这是我像剥开,还有一层洋葱,又像多脱了一层蛋糕,即加载程序是操作系统,所以操作系统的工作之一是加载程序并运行它们,所以如果你有兴趣。

再拿一个六十二,只是装载机上的几个注意事项,因为你就像,好啦,但我不想拿六十二,只是还没有,只要告诉我,关于这个成本的一点戏弄,所以我会,加载程序首先为整个程序创建一个地址空间,这是个疯狂的想法。

因为在这之前我们一直在思考记忆,就像这个巨大的连续数组从零到二再到三二,然后整个事情对我们来说是可以访问的对吧,在任何时候装载机都会留出空间,好啦,这就是我要让你使用的空间,你可以认为你有所有的空间。

从0到2到3到2,但也许你不知道,这就是所谓的虚拟内存,我们过几个星期再谈,那么它是如何创造空间的呢,它会在运行时看到程序在开始时需要多少空间吗,当它启动程序时,所以这是指令的大小,所以文本部分。

以及全局变量的大小,是静电,或者数据段,它创建这个新的地址空间,还创建了一个堆栈段,所以它复制了所有的指令,数据输入,到这个新地址空间,它也清除了很多。

一些寄存器,让我们看看我这里有没有,是啊,是啊,它还清除了一些寄存器,特别是其中一个肯定会被清除并重置,是堆栈指针,好啦,所以堆栈指针,它指向第一个空闲堆栈位置最终与,在程序中传递的任何参数。

就像你运行一个可执行文件,通常在这里传递一些参数,参数首先传递到堆栈,这是从幻灯片的最上面开始的,不行了,不行了,不抱歉,这种事不断发生,科技硬,最后是争论,它确实首先将它们移到堆栈上。

然后它有一个启动例程,启动例程将参数从堆栈移动到参数寄存器中,供main执行,好啦,所以在我们的C程序中,我们有两个论点,我们通常认为RC和RV,现在这两个值,所以参数的数量。

以及这些参数将被存储到寄存器中的地址,然后main现在被称为启动例程,如果主例程返回一个特定的值,它会以退出系统调用终止程序,所以你可以看到,有一个更大的东西在运行这个程序,所以我们要做的,我确实有。

让我们看看我有一个同伴指令,但我也有一个例子,所以我要做的是,我要给你们看一个例子。

对等指令,答案确实在幻灯片上,我晚点再给你看,但是让我们来看看其中一个编译的程序。

所以我们可以看到我所说的所有事情,C a和L。

我们不会讨论在一个程序中加载太多内容,让我们假设我们有你好世界,你好世界稍微改变了这个,所以不是用hello world来打印f,这里有两个论点,这样我们就可以看到在我们的数据段中创建的两个字符串。

它把它编成这样,我知道这就像,突然有点小短信,但第一部分是什么,以下是所有的指令,我要开始我的指示。

这是我的教学片段,因此,我想把所有的东西都对齐到单词2到两个字节,然后我也希望缅因州可以访问其他程序,我们有一个标签,这是主要的,所以这就是编译器为汇编程序创建的内容,然后是主程序本身,它有一个前导。

在那里分配堆栈帧,它缓存,返回地址加载到字符串1中,并且,将两个地址串成零和一,然后,它使用伪指令调用printf,然后加载信息,然后我们重新审视,分配堆栈帧。

然后回来,这个程序集输出中的其他部分是什么,嗯,数据,好啦,那么写入的数据是什么,有一个指令,它说嘿,现在启动只读数据段,现在这就是字符串一标签应该是,这是一个字符串你好你好,带着一点mod s。

然后将两个标签字符串到这个特定的数据世界,然后是汇编程序,所以你可以看到这里发生了什么,因为有三个不同的版本,有一些未解决的事情,我只是要指出他们在这里,所以这就像没事,伪指令,所有这些加载地址和调用。

那些都被替换了,然而,我不能完全解释所有的机器代码,因为我不知道到底是哪个地址,这些是其中一些跳转到printf,他们中的一些人跳到商店,或者他们中的一些人加载字符串一,那些全局变量。

我不知道那些在哪里,所以它把它们包括在符号中,并放入重新定位表供链接器查看,这就是链接器所做的,链接者说好吧好吧。

我只是要编辑所有这些说明,而不是上一张幻灯片中的零字节。

现在我把它们作为,就像,实际地址本身,所以现在要指出的是,字符串1是十六进制的。

二零一零,让我们看看我的光标是否有效,它不起作用。

所以在2 0,所以你可以看到它的负载是2-1。

然后是1和0的相加,为什么用二一,看看上次的讲座,祝你周末愉快,我们星期一再见。

P18:Lecture 14 Intro to Synchronous Digital Systems - 这样好__ - BV1s7421T7XR

所有公共软件存储库的21TB快照,主要用二维码编码,那不是很迷人吗?位于挪威一座山中250米处,这个档案程序说希望是,通过存储和索引数以百万计的存储库,我们捕捉到了现代软件世界的一个有价值的横截面。

设计了一千年的档案,一张快照储存在一百八十多卷胶卷里,所以现在这很迷人,我希望你们都考虑一下自己的个人数据备份计划,我敢肯定你创造了很多东西,手机,电影,你所做的一切,你写的所有代码。

你是怎么把它备份的,无论你的计划是什么,你有能力对任何移动设备的丢失做出反应,所以只要确保,你关心的东西没有一个只在移动设备上,消失的瞬间或掉进水里或掉进水里,它不见了,你要确保它已经沉入云中。

沉到这个,现在有一些隐私的东西对吧,人们知道你有你的私人照片,可能是健身什么的,我不知道你在做什么,但你在做一些,这些照片真的想保密,吊杆,他们进入云端的那一刻,他们可以被黑,这是一个令人担忧的问题。

所以我很感激,但无论你做什么,确保你对失败有弹性,我们学到的一件事--计算机体系结构的大思想--是,冗余,所以要确保数据在多个地方,好啦,所以你想想,当我们谈论谷歌和开源软件以及备份时,确保这一点。

我想我有四个不同的地方我的数据试图同步到,万一我弄丢了我孩子的照片和所有的东西,所以非常重要,东西,好啦,我们开始吧,女士们先生们,欢迎来到CS 61。

参见一个名为同步数字系统导论的新讲座,也称为SDS。

如果摄像机能把我放大,我这里有一个小演示,这是我几分钟前编程的微型位,我要给你一个小消息,你能看到这里的信息吗,我们准备好了,走哦,让我看看,你能看到留言吗,好啦,上面写了什么,C六二一C SD。

今天我们要学一个新题目,我想在那里给你一个小小的庆祝,所以是的,是呀,大人,哎呦,摄像机开着,我们知道为什么,哎呦,摄像机,照相机怎么了,谢谢你,摄影机开着,是啊,是啊,摄影机有问题,后面的摄像机坏了。

或者我没有设置变焦,至少能帮我解决这个问题,我以为我做的是对的,开始了,这是我的,开始了开始了,我们在做一件事,摄像机不在那上面,相机不是很好,我们可以把东西藏起来,谢谢你,是呀,是呀,好啦。

所以我会再按一次按钮,好啦,开始了,你不必做呜呜,我们再次,我就在这儿,把摄像机给我,我们走,谢谢你,很抱歉,我没按对按钮,好啦,我应该给你一个期中考试的最新情况,人们已经被审问过了,你知道的。

想知道期中考试的计划是什么,期中考试将在三周后举行,大约两到三周,交易是这样的,我想我在第一节课上就说过了,但我会再说一遍,期中考试有两部分,会有一个带回家的,你在家工作的期中考试,未经检验。

我们信任你就像,我们把项目托付给你,未经检验,你要单干了,这将是你的C编程和你的风险,完成5个方案拟订,都搞定了,没有时间,只要能把它压碎,我们会给你所有的测试用例,让我们有快乐的快乐,好啦。

所以你只要工作直到你得到测试用例,有福了,你把它压碎砰,提交,你们都完了,你知道你在银行里得到那些积分在银行里,然后你们要进行80分钟的考试,就像你在实验室里有90分钟的时间。

但是从一个班转到另一个班需要十分钟,所以八分钟的考试,我们会试着写出来,所以我们的助教可以在20分钟内完成,在那里你去草原,学习,你只会回答问题,但重要的是,你没有学习表,所以这只是字面上的。

你冷冰冰地走进来,我们要把你交给,我们所说的报价,未引用,绿色床单,也就是,我想在这一点上,它被吹成了五页的东西,这是在网页上,所以这将交给你,所以所有的哦,咬什么,看起来像,什么是一一,零零和c。

文件上有,什么是,风险五转换,这就是我们翻译过来的绿表上的所有内容,所以所有这些都将给你,所以你可以看着它说好,如果上面写着,我不需要记住它,否则你需要记住它,你会被要求做什么,你会被要求做这些事。

同步数字系统可以被要求做一切,到了考试的时候,这不是在编程方面,C和风险5在那边,剩下的,我们已经询问了您关于数字表示或基本转换的问题,你一定能做到,事实上,您需要能够从任何基转换到任何基,你会喜欢。

这不只是我教你的,我能教你什么,然后你如何从中学到其他东西,我教了你如何在二进制十六进制和十进制之间转换,你应该可以推断从任何基地转移,就像三垒到五垒,你应该能做到的,所以练习一下。

确保你知道那是为你而来的,好啦,所以这两个基本的转换,浮点,我们还没有在编程方面测试过你,是的,我们还没有测试你,可能是风险五,这些碎片是什么样子的,因为这不是在编程方面。

这就像如何编码一些东西,但这些碎片是什么样子的,如果我能从碎片,给汇编程序的机器代码。

或者把它组装成碎片,丽莎上周做的那些事,电话接通,那是在笔试上,我说,SDS与浮点,所以所有那些,所以基本上,这是一个比61年任何时候都轻量级的期中考试,因为我们会相信你,单独解码。

在没有计时器的情况下进行编程,就像一个真实的面试问题,你知道一些谷歌采访,说嘿代码,一些东西,你想花多少时间就花多少时间,这就是我们要给你的嘣,然后我们就和你在一起了,最好知道剩下的东西是冷的。

挺干净的,我希望你们都能把它压碎,我们都想有一个所有模特的王牌,所以我们希望你们都粉碎它,我希望你们所有人都能把这部分做得很好,我希望你们所有人都能把这部分做得很好,提前告诉你,会发生什么。

这就是我们现在正在做的事情,在后勤方面试图弄清楚,我们有750名学生,你什么时候能赶上那80分钟的时段,大约90分钟的时段,十分钟的过渡,所以这是一个80分钟的例子,你什么时候能来。

所以有很多关于这一点的调查,我们在找房间,还有这些废话废话,你用实验室,用你的笔记本电脑,所有这些事情,你有笔记本电脑,在不插上电源的情况下可以工作80多分钟,然后我可以把你放在房间中间像这样。

还是必须插上电源,但我们必须有电源条和所有这些东西,所以我们正在研究所有的细节,但物流显然仍有待解决,但计划已经准备好了,所以给你一些东西,一些用C语言编程的东西,然后摇滚到你的无学习表,离开它走进来。

我们给你一点点,你知道的,绿色床单和你的摇滚,好啦,有问题吗?这就是中期更新,希望你能用,这样做的目标是有一种新的方法,我们在61 C中评估,这使得您不必担心编程方面的时间安排。

但也要确保你知道这些关于非编程方面的问题,是呀,我们会给你草稿纸,所以我们会给你一些草稿纸,我们会收回来的,所以你可以写你需要的一切,然后我们从你那里拿回来,因为当我做那些小事情的时候,我也用草稿纸。

问得好,是呀,还有什么关于期中考试的问题吗?

埃德埃德会有所有的细节,当我们离约会越来越近的时候,太棒了好吧,我们去开关。

所以今天我们学习同步数字系统,什么是开关,所以大局,听我说,你以前见过这个,我要给你们看四五张幻灯片,你以前见过,这是老派的大图景,六一C是ISA就在中间,这个讲座是一个新模块的开始。

所以如果你之前很困惑,没关系的,全部重置,从字面上看,这是每个人的重置,我们现在在做什么,我们有点自上而下地接受了ISA,我认为丽莎结束了一天的工作能够从任何应用程序,你显然可以编码并看到一直到风险五。

一直到编译器,汇编器,链接器和加载器,带L的卡尔,所以你现在处于ISA的水平,那很酷,现在我们来看看这张照片,喜欢咬一个喜欢,从底部咬汉堡,我们要从最底层开始,一直到建立一个运行ISA的系统。

从字面上看,你会从上到下拥有整个东西,当这种情况发生的时候,这是令人惊讶的一天,我们从这幅画的底部开始,我们要努力向上。

新的学校机器结构再次,你以前见过这个,我们在硬件描述或逻辑门的最低水平。

再次,中间是ISA的照片。

这是我们的抽象层,我们将在这里,在下部远离底部工作,一路向上,每次演讲,我将在前面讲座的基础上再接再厉,所以这一节我想是连续四节课,我们要建造我们的道路,然后我们要继续建设,你要建造的CPU级别越高。

那真的很酷,这是一堂很棒的课,这门课不是我发明的,我继承了这门课,太神奇了,我们继续添加丽莎,我和其他老师都加入了我们的小作品,但这是一门很棒的课,然后呢,我很荣幸能教这些美妙的东西。

我本科时最喜欢的课程之一,可能莉萨在本科时就选修了这门课。

我在麻省理工学院上了他们的课,我们喜欢这东西,所以我们很高兴来到这里,所以我们说的是同步数字系统,那是什么意思,这些话是什么意思,同步这个词就像心跳一样,我的麦克风要看,就像我手指上的假心跳。

但是一个系统中的时钟有规律地连续运行的想法,有频率或周期,就像心跳砰砰砰砰,说做点什么,做某事做某事做某事的意思是运行指令,增量,电脑,继续这样做,字面上保持处理数据。

这就是我们的同步系统将以数字方式运行的东西,说世界是,我想我的第二堂课,世界是模拟的,但我们要把东西转换成数字世界,我们讨论了如何做到这一点,通过抽样,我们看到如果你有一些数据,然后你量子化了。

我们看到了这两个想法,电信号,我们要量子化成,不是伏特,但是1或0,所以我们有两个不同的值。

我们将以抽象的方式把它们分组,形成单词,你马上就会看到,它很酷,所以逻辑设计,顺便说一句,还有其他课程,如果你想了解更多关于这个的信息,一百五十元是很好的菜,一五十一,有一些很棒的后续课程,事实上。

如果你今天爱上了61 C苹果会很高兴见到你的,如果今天就像,我的天啊,我做不到,这是最神奇的新材料,苹果想雇你,有这么多人,他们在制造自己的硅,所以他们不能雇佣足够的人来制造自己的硅,他们想把一大群人。

所以我们希望你能爱上这个米切尔和苹果,尤其是爱上这种材料,然后说我想参加后续课程,151然后是接下来的比赛,你知道的,工作在等着你,有很多钱,你拿他们的包,他们拿了你的包,乡亲们,所以这真的很令人兴奋。

好的,好的,所以我们将讨论如何从下到上再构建一个处理器,了解最低的最低水平是如何,电流是如何均匀流动的,电压是多少,然后一路向上,为什么我们很关心硬件设计,当我们运行软件时。

了解硬件是如何工作的实际上很重要,所以他们说我是个软件人不,但了解硬件级别上发生了什么实际上很重要,事实上,这就是六二和c的特别之处,这将是,假设你决定成为一名软件开发人员。

你的余生都要知道它是如何运行的,会让你成为一个更好的程序员,当然,知道你将学会如何优化它,这个词你还没学会,现金是下面东西的一部分,如何管理自己的记忆,所有这些都能让你成为一个更好的程序员,你看。

它真的可以让你在那个水平上触摸硅,所以理解硬件是非常重要的,你在想处理器,他们擅长什么,什么不,他们做得很好,他们什么时候会失速,其中一件事就像放慢速度,变得黑暗,我的表演有点慢,是啊,是啊。

因为你不知道引擎盖下发生了什么,一旦你明白了,你避开那些时候,你试图优化时间,在那里你可以做事情非常快,而且非常有效,还有更多的课程,一五二也是我们150系列的CPU设计课程,顺便说一句。

伯克利是我们的硬件系列,你可以用标准处理器做很多事情,所以有些,有一个全新的运动,为非常专业化的东西设计定制硬件,这很令人兴奋,这是一个奇妙的领域。

如果你决定跟随那个字段,这是一个简单的电路,让我们一起看看这个并理解它,这是一个开关,现在是一个开关,它显示为打开的,这是灯泡或电阻元件,会有点光的,你会看到一些输出,这是一个电源,这是如何工作的。

当a为零时,那个开关是开着的,电流必须流动,如果你从早期的物理课上学到了基本的电学知识,电流必须流动才能发生事情,所以如果没有电流流过电阻元件或光,现在开关一关,灯就会熄灭。

有一个循环,当我们有一个循环,好事是会发生的,从你身上流出的电流,想想当前的电子从电源流过光。

他们,这现在是一条直线,没关系,它看起来不像是,就像一个打开的开关,大门已经关上了,我不说,抽动的词门关闭了,循环还在继续,灯亮着,你能做到的,顺便说一下,我喜欢这个,你可以像今天一样吃双份。

一块电池和一块锡纸,你和你从手电筒里拿一盏灯,你可以做一盏灯,就像,我的天啊,仅此而已,它实际上是所有的动力源,你的电池,这是你的灯,就这样了,你只是把两者连接起来,做起来很容易,也很有趣,所以A继续。

事实上我有一件小事,但当我推它看看它在那里是否有效时,它就起作用了,嘣它继续,当我拉便便的时候,它爆炸了,所以把它推上,继续释放它,它爆炸了,所以事情是这样的,所以当它关闭电流时,如果我们称之为断言。

这是一个有点奇怪的图表,因为它就像一个,当这像它要做的事情,这是我说的,就像一个,什么能做到这一点,这里现在是一个关闭的,现在有光,如果这真的是那张照片,意思是说,如果你打开开关,如果取消断言。

然后电流停止流动,所以当一个变成一个,灯亮了,就像一对一,这就是我通过三个等号所显示的,所以我推,让我看看,让我们关闭一个准备关闭一个,现在我发布了一个,现在开了,什么都没发生。

那是我的小照片,现在如果你有这样的想法,当A关闭时,电流可以流动,当a打开时,或者零电流不流动,让我们看看这个,如果我们有这条线,什么时候会有联系,图片左侧和右侧之间的电气连接,只在逻辑上,当a关闭时。

空白B关闭,只有当它们都关闭时,空白是什么,或者他们都被断言,或者两个人都记得这个词,我们试着用所有这些词,所以你变得很流利,断言,意思是他们去一个,左边和右边之间有电气连接吗,如果你把电池放在灯里。

就会产生联系,所以这很有趣看看这个,只是把A和B放进去,3。这个词你以前听说过吗?它们都必须在那里才能让电流流过那条线,看下图,现在你把它们建在,现在你说呢,那是什么逻辑。

那根电线的左边是什么时候连接的,在电线的右边,电流可以通过顶部或底部或两者兼而有之,如果两者都是,也没关系,它有点分裂,不过没关系,两者都有联系,电气,所以电流可以流动,电子可以流动。

所以底部的图片是合乎逻辑的还是很酷,所以我现在向你们展示了一个合乎逻辑的,或者只是用电线,顺便说一句,你也可以用锡纸做这个,还有你的铝箔,然后你把这个,你也没事,就是这样,让我们用电线把它分开,好啦。

在那里,哇,你今天就可以这么做,今天用锡纸,这是很有趣的问题,但要确保我不会失去任何。

因为一个新的话题,我想失去任何人,这是有趣的一个,现在有一个历史笔记,人们习惯了,在过去的日子里,构建电路,有点临时的,没有关于他们的规则,没有一本书说过只需要建立一些电路,他们中的一些人做到了,啊。

你在建筑圈的最佳实践是什么,非常粘稠的,这是一种做这件事的艺术,而不是一门做事的科学,他们意识到共同的模式,就像我发现了一个叫做N的东西,嘿嘿,你也发现了一个N,挺酷的嘛。

那么也许这个克劳德·香农有一些基本的东西,信息论之父之一,把晶体管和这个叫乔治的数学家联系起来,公牛在这里,所以我们称它为公牛。

大写B怎么样,因为它是以某人的名字命名的,多么整洁,这意味着我们现在可以应用数学,多亏了布尔,我们可以把数学应用于电路设计,多么奇妙的联系,感谢香农和伯乐,对那些场晶体管的贡献,晶体管的历史。

晶体管诞生于1947年,圣诞节前两天,晶体管或半导体,这意味着它们有时会连接电力,但有时不要依赖其他非常强大的信号,你可以指挥也可以不指挥,我们将看到这是背后的基础,它们可以用来,不是开就是关。

那就像一个开关,或者你也可以有一个电源,实际上可以放大,如果有人有模拟放大器或收音机,你在家里给扬声器供电,你可以,扬声器是这样供电的,有一个由放大器供电的,现在,你听到我在房间里说的了,Lsb。

1222,我在说话,想把自己喊得上气不接下气,因为没有放大器,现在不是第二天发生的事了,但不久之后,他们意识到你可以用这个作为放大器,不只是一个或零,但实际上小信号,小波长,大信号,喔喔,太神奇了。

现在我可以为大喇叭和体育场供电,你在想你去过的每一场音乐会,你得感谢这些人,谁是乡亲,约翰·巴丁,威廉·肖克利和沃尔特·巴坦·肖克利是最大的,我说人类历史上最大最糟糕的种族主义者,所以抬起头来。

威廉·肖克利和阅读肖克利,只是啊,仅供参考,在那之前他们用的是真空管,你还记得真空管是他们如何编程的吗,早期的计算机,埃尼亚克和其他人,在那之后,我们现在有了微处理器,你有你的电脑。

我是说电子产品的小型化,多亏了晶体管,这是一件令人惊奇的事情,这是第一个晶体管,这很神奇,经营这个PBS的艾拉·弗拉托,特别,称为晶体管化,他说晶体管可能是20世纪最重要的发明,相当强大。

现在我们可以设计模型现代数字系统,使用这些转换的数组,全部放在一起,这项技术被称为半导体上的金属氧化物,那是苔藓,C代表互补,常开或常闭开关,我们将在下一两张幻灯片中看到这一点,它们被用作电压控制开关。

是苔藓晶体管,好吧,我们开始吧,我要花些时间在这张幻灯片上,所以你得到了一张照片,这是一张你可能以前见过的照片,但如果不是,你可能不知道它是如何工作的,让我们一起来理解,有三个航站楼,g和s的a d。

如果你忘了顺序,我在这里给你助记符,丹·加西亚说,如果你还记得那个DG,我不能,我就是不能,太近了,离DG太近,开始了,就像所有的水流都想排到闸门里,控制大门的人,不管这些事情是否有联系。

像你这样的线人,电压漏极和电源,真的是这样,如果现在栅极端子上的电压,电压总是两个引线之间的电压,在闸门和下水道之间,高于或低于源电压,在源头和排水口之间,然后在漏极和源之间建立导电路径,就像一扇门。

好啦,这里有饮料,这里是,这是消息来源,就像水源,我想这样流动,排水口在那里,它没有被榨干,我是门,它流动吗,它流动吗,还是不流动,我喜欢开关对吧,流还是不流,我如何控制那口井取决于。

我在这个门上有多少电压,所以有n通道和p通道,N代表负,G头呈阳性,但我喜欢记住的方式,它是n是正常的,什么叫正常,这只是我对自己的记忆,好啦,我想它就像看,如果我不在这里加电压,什么都不应该发生。

如果我,如果我找到像大门,对呀,就像你知道的,I,我不想给星门供电,星门不会有任何作用,门应该坏了,所以只有当我给大门通电时,大门才会打开,我说电源在星门上加一些电压,关门了吗,当它再次关闭时。

那我们就开始行动,所以这有点像,你不需要力量来让事情发生,当它发生时,两者之间有联系,记住我不是在放大,我只是在做一个关闭的开关或打开的开关,所以我的意思是,在正常情况下,我必须施加这个电压。

所以事情就是这样,我们开始了,当g较低时,也就是栅极电压,当那很低的时候,“那是什么?”“他们长什么样?”,顺便说一下,这个p通道正好相反,真的很好玩,我们将在这个世界上看到很多二元性,二元性就像阴阳。

在那里,事物以这种非常美丽的方式联系在一起,N和P就像对偶,像我这样的对偶在两者之间划清界限,就像有N个世界,P个世界是,就像奇怪的事情,就在这上面,然后是相反的世界,所以n是标准值,我觉得你应该。

你得加些电压才能把门关上,所以当g较低时,意思就是,假设大门就像没有,我不打算给星门供电,对不起,我不打算在门上放任何电流,不会给星门施加任何电压,没有电流从栅极流向排水沟,所以那是开放的。

什么都没有发生,但是P正好相反,它总是联系在一起的,总是关闭,直到你给闸门施加一些电压,然后它就会打开,所以恰恰相反,所以当g很低时,这是开放的,n通道打开,p通道关闭并反转,当我反转它时是什么循环。

我就是这么想的,我要在门上加些电压,现在呢,现在要关闭它了,它是一个连接的电路,p是相反的,现在开了,好啦,只要记住,所以正常,我应用它关闭,当我在那里放一些电压时,P就打开了。

好啦,现在我要给你们看一些接线图,我们是如何联系的,我们在结束前看到了,或者我们得到了这看起来像什么,这是我的,我告诉你是三伏和零伏,顺便说一句,当我长大的时候,我们是TTL电路,是五伏特。

所以这是一个,现在是三伏,现在更低了,因为我们试图减少我们系统的能量,但现在我告诉你是3伏和0伏,当我们称这个为1和0,零是地面,就像真的掉到地上,电流只是流入地下,一个是电压源,x和y是什么关系。

y是输出,x是输入,看看我是怎么给他们接线的,上面的是P通道,底部现在是一个n通道,当x为零伏特时,好啦,所以我根本没有给X供电,X是零,那上面的门怎么办,关门了,不是吗,记住当它是零的时候。

从最后一张幻灯片开始就关闭了,所以我把这个画给我,就像电流上下流动,像这样上上下下,但有联系,好啦,是否有泡沫,我拿一根电线打个结,它还连接着,你拿一根电线,这样就上上下下了,那是有联系的,这是断开的。

所以你看到了什么为什么就像,顺便说一下,你永远不希望有一个输出同时连接到零,这将是非常糟糕的,所以我们要,希望在今天的课上没有,所以哪一个是为什么看到,这就是为什么我看到三个,或者为什么我看到零。

三个人等着,这很奇怪,当x为零时,Y是三,现在让我们把它翻过来,当x是3时会发生什么,恰恰相反的情况发生了,当x等于3时,这个关上了,记住这很高,这是正常的,普通单窗电源,我要关上那扇门。

现在在排水和源之间有一个联系,Y看到零,这看起来像什么,不是门,没门儿,我已经给你看了一个,一个或者,我不是不可能,那不是很棒吗,你一直想知道,电流流动和这个逻辑门之间有什么联系,我刚刚把它画给你了。

为了不,这很酷。

事实上,我要把他们联系起来,记住这里的这个东西,上面的那个,最上面的是,否则这就是结局对吧,你以前见过,让我们用一种有趣的方式,让我们看看能不能看到,C是我的输出,这是我的输出,C连接到这个家伙的中间。

我有一个安迪的事情是正确的,就像连续剧的结尾,安迪的事变成了地面,我发现了一个连接到电压源的东西,现在让我们问一个问题,我们的真理是什么,答案是这样的,真值表是什么样子的,让我们好好考虑一下。

我先做最下面一行,出于某种原因,我总是喜欢做最下面的一排,当a和b为一时,这些是封闭的,布罗姆所以C看到地面现在看到,希望更好,也看不到电压源,最好不要看到,让我们好好试试,这两个都是一体的,哦。

但是你看,这些是p通道晶体管,所以当你得到一个的时候,他们是做什么的,他们打开,所以我们也没有连接到电压源,所以看贝弗利看地面,无短路,我很好,所以这意味着输出为零,看到归零地,现在呢,这里是另一条路。

我可以看看这个,我可以这就是有趣的地方,这是,我也不一定要去,每个病例前三名的病例中每个病例都有两个病例中的一个,其中一个是零,如果其中一个是零,那么C就看不到地面了,因为这意味着其中一个垫底的人。

所以我不下去,这意味着一个或两个--一个或另一个或两个都为零,这意味着其中一个或另一个或两个都关闭了,我现在看到了逻辑上的电压源,我不是只有两箱,有底线,然后另外三行,其中一个或另一个为零,因此。

C和一个之间有一个通过左右或两个电压源的连接,所以它是一个,这是什么门,南德门,大家可以看到这个,记住是0 0 0 1,如果你记得你的真值表,如果我翻转它,它变成了一个nand或一一一零。

有一个结束的游戏,所以我给你打了一个结,我们把它们放在一起建造了这个nand门,一个字面上的两输入一输出与非门,这就是它的疯狂之处,如果我只给你一个和门,你回去的时候,至少我以前会开玩笑。

他们要去无线电小屋,无线电小屋现在停业了,但是你到了这个地方,弗莱的电子井,他们倒闭了,你去一家电子商店,你买一个二输入一输出与非门,但你买了一千个,我说,你能用它做任何电路吗,答案是。

你可以用与非门建造任何电路,那很酷,这是一个基本的组成部分,我们称之为基本子弹,你能相信吗,或者,但在和是的,带着奶奶,你能做到的,意思是你可以把一个nand变成一个坚果,一旦你有了一个结。

你可以把广告做成结尾,感谢摩尔定律,如果你有一个没有和结束,谢谢,你可以做一个或者你可以用人类之门建造任何东西,那不是很酷吗,我会给你一个基本的积木,从电池和手电筒上的电流开始。

现在我们说的是逻辑,现在我们在数字领域,现在真的很有趣,让我们好好谈谈信号,如果你有这个,这些信号会随时间变化吗,是呀,我们现在谈谈那个。

所以我们要从心跳开始,我们的钟,这是我们系统的时钟,三伏很高,零伏特很低,我们要观察电压随时间的变化,这里有两个新词,你可能有一段时间没看到了,一个是T代表期间,这是一个脉冲上升沿之间的距离。

以及纳秒内提到的下一个脉冲的上升边缘,与频率成反比,所以一纳秒周期是千兆赫,十到九,十到负九分之一,当这是数字的时候,我们真的只处理这个,当它是一或零时,会有一个过渡期,我们必须与之合作。

它不会是完美的,看看这个,有一些圆形的边缘,没有什么是完美的,啊,来吧,来吧,你说方波对吧,它应该是一个直角,而且是的,否,它是,这是一个模拟的世界,事物并不完全是圆的,会有一点时间,在这里运行的地方。

在那里四舍五入,但希望它非常接近方波,我们有,它不断地在电线上移动,从字面上看,我在发出信号,就像我们现在生活的那样,有这样的无线信息,如果你看看WiFi的无线信号,看起来是这样的,如果你测量这个东西。

我们要说的传播实际上是即时的,但我们将讨论延迟,当它们实际上更正式时,但有效的传播是瞬间发生的,和Applier意味着一根电线在一次只包含一个值,不是一就是零,从来没有中间的东西。

这是一个加法器电路,所以现在我们已经在这里了,我跳了很多,我还没有告诉你如何建立一个外部电路,这将在几节课中,但是想象一下这个加法器电路,它把b的n个比特和a的n个比特相加,我们需要那个,记住第一个。

我们向你们介绍的第一个指令是什么风险五,你不需要这样的东西来让它发生吗,你得到了一些信号,你得加上这两个,这里是三,二,三个二位数量,三个量b,你得有总数,总得有人做这项工作,这就是它的工作原理。

这是我的电压上升和下降,时间从左到右,现在你看到了一些关于B的有趣的事情,这真的很有趣,头号男孩,那个不是纯的,我真希望是,它不是,我们有生命,这是我的,这是我的月经,这是我的频率,所以这是我的。

这是我对时钟每次上升边缘的指示,给你看看这个,A和b。

我不知道是谁创造的,A和b,我不知道花了多长时间从实际的32位。

从登记文件里出来的,带寄存器,注册文件以到达,我们称之为算术逻辑单元,那是阿卢,那将是,在哪里做这件事,可能会有一些延误,谁知道我的身体里发生了什么,那些东西有多远,会有一些延迟。

所以我们已经看到了一些模拟的问题,这个模拟领域正在悄悄进入我美丽的数字世界的纯洁。

我们得解决这个问题,我们得学会如何处理它,现在我说的是把这些分组成单词,这是我们谈论它的插槽,我喜欢这个,这就像是一个抽象,我有四块,我在这里咬了一口,x0到x3,随着时间的推移,它们有以下值。

我画了1和0,约翰·瓦策尼奇,我感谢你把这张图拼凑在一起,现在画那些画,把你的头,每个人,把你的头,包括视频里的然后左转,我猜它是对着屏幕,逆时针方向,你看到了什么,哦,那就像读啃看,哦一对一,那是五。

哦一个一个,啊,那是六一一零零,那是八,看到你像表情符号一样把头向左转,你从表情符号中得到了一个表情符号,你在第一个路口向左转头,我收到了四个表情符号,我不知道,这个冒号减去右边是什么。

我忘记了我说的一些代码,丹把你的头向左,第一个表情符号,很多年前,真实故事,有一个,有一个七,所以现在我们可以用一种非常酷的方式来分组,所以现在与其有这些碎片,我可以考虑,看这个x的小写。

下标标明你的位置,我画的是大写的x,你看,这不是很漂亮吗?向量,如果你愿意的话,载体数量,五六八一七,排得很好。

所以现在这很酷,呃,哎呦,这是我的蝰蛇,这是我的爵士表情,这是我的小蝰蛇,看这是一口,B是一口,看到有一小口出来,在第一张照片中,你可能首先看到的错误是什么,四进四出四进四出,那有什么不对。

我刚才说的话,当你添加像这样的东西时会发生什么,如果什么,如果A都是一,我加了一个,那里发生了什么,不是吗?我们要找的词是什么,说大声点,溢出,是不是溢出来了,确实如此,不应该。

我有一种方法来表明那里的溢出,所以是的,稍后我们实际上构建了这个,我们要在那里再做一点,看看它是否溢出来了,或者我们最后称之为执行的东西,它携带了,有像这样的携带吗,那就是,你知道那些,如果你在做加法。

就像正常的一年级数学一样,你还有一个专栏,当它移动到左栏时,这一点没有专栏吗?你知道应该有,所以说,应该有一个执行的加法器,在那里我们更正式地建立这个,但不管怎样,这里有一个B,这里的a和b是这些向量。

我画了一条线,斜线,表示该行有四位,这是一种很好的画法,这是我的A和B,甚至喜欢漂亮的颜色,二三四五加三十零一给你五,十三四和六,现在我要给你看这个,有一个延迟,如果A和B之间有漂亮的衬里。

需要一些时间,看他们多漂亮,他们排得很整齐,A和B切换到3和10需要一些时间,我没有看到3和10在线上,直到我们所说的加法器传播延迟之后,只是有些延迟,那会在我的加法器里,然后我保证我有一个收音机。

小腿或薯条,或者我的电子商店,他们说,啊,我想买一条蝮蛇,我说,哦哦,你知道这是什么吗,我有一个便宜的,有很长的传播延迟,到输出需要很长时间,在稳定之前,在保证稳定之前。

或者你可以花高价买这个镀金的,它的传播延迟要短得多。

我只需要传播越低越好,我要多付一点钱买那个短一点的,你看到了吗,这就是,如果A和B改变繁荣,多长时间,直到我保证输出的总和是干净和正确的,这就是增加传播延迟的原因,你的笔记是如此正确。

如果你需要加上那个很酷的。

这是一个示例调试系统,让您实际查看,你可能在一个,五十还是一,五个,一个或其他类,如果你看看这里,就在那里,中间,你看不到三个,一个,两个,三个,四,它实际上将一组位分组为等价的数字。

所以正如你所看到的,而不是看那些像什么数字,啊,那是两个人花了半个小时来弄清楚这些比特是什么意思,就一个数字而言,有时他们会给你实际的数字,作为一个作为,作为它下面的一组位的组合,真的很酷。

它是一个调试器来调试您的。

顺便说一句,你的波形和定时错误,是一组全新的bug,你以前从来没有想过,像这样延迟的想法影响了这一点,它应该是稳定的,但事实并非如此,这就像是调试的另一个维度,你以前从没想过,我相信你从来没有。

如果你总是和软件打交道,在考虑时机,我的电路有故障,因为时机不对是你必须,然后开始学习如何欣赏问题,再告诉我一次你的名字,谢谢你。

一点都不像,啊,我喜欢它,这是一个伟大的德拉雅,问了一个很好的问题,当A和B是你时就会发生这种情况,你说你知道你给了我一张很好的照片,A和B是同步的,当他们不同步时会发生什么,我们会讲到这一点的。

我们得等到他们同步,他们,他们不被允许,嗯,我们将要谈论一些事情,A没有钟,A只是一个组合逻辑,我们将在最后一张幻灯片上看到这一点,所以他们只是,延迟是在最长的一个进来,任何更长的,A或B,我加上传播。

那么输出就不稳定了,在那之前,所以你得等到最后一个进来,就像你在等家人的桌子,就像你妹妹从来不来吃晚饭,准时,你得等到那个人来,所以说,你可以说好,让我们祈祷或者开始晚餐吧,同样的想法。

所以要等到后面那个。

然后在后一个上添加添加的传播层,然后你知道你的数据,所以当你在你的时间图表中工作时,你把所有的因素都考虑进去了,A B要推迟了,因为它来自不同的地方,不管有多长的路,不管是什么,你都可以说。

那是我可以开始数数的时候,再加上传播,然后我知道我的蝰蛇会把它纠正过来。

从这点来看,很好的问题,你真的真的很好,我只是把它联系在一起,有两种电路,一种叫做组合逻辑电路,我只是看着这完美的插曲,组合逻辑电路没有时钟,如果你还记得你的61,或者实际上这里有多少人来自CS 10。

我爱CS十家,任何人,这里有答案,十先令,我们还专注于函数式编程,我们称之为纯函数来区分非纯函数,纯函数是其输入的输出只是输入的函数的函数,你以前见过这个短语,这就是组合逻辑电路的全部--没有时钟。

相同的输入总是给你相同的输出可能会有一些延迟,但总是会给你同样的输出,功能上,我们喜欢组合逻辑电路,它们真的很容易调试,我们可以和他们合作,他们会有不同的延误,但它们有多复杂,但这些都是很好的状态元素。

我们还需要,我们得记住一些东西,没有办法,如果我们只有组合逻辑电路,我们可以做很多,我们当然可以做很多事情,但能有,你知道的,记住昨天的一些事情,以便能够加载一个文件,文件在哪里,它在州巡回法院。

那是在一张磁盘上,或者在闪光灯上寻找昨天停电时记得的东西,但我做了我的数据没有丢失很大,因为状态元素,有时状态元素是不稳定的,意味着当停电时,他们会失去它的,有时它们不易挥发,意味着当停电时。

他们会把它储存起来,这很好,所以我们喜欢不易挥发的东西,但它们通常更贵,速度也更慢,不稳定的东西真的很棒,就像一个寄存器,很棒的寄存器,非常快,拿到数据了,但突然间注册的力量失去了它。

所以寄存器肯定是不稳定的,我说对了就像收银台一样,我刚说了注册这个词,看着我,所以这里有一个,这里有一个非常漂亮的顶层,黑色,有点像寄存器的黑匣子图,我有一个登记簿,它有N个输入和N个输出,顺便说一句。

它有,这个小三角表示,通常这将是一个时钟元素,连接到负载,以下是我注册的方式,我喜欢这个类比,对了,登记簿是朝前的,所以输出就在我面前,面向前方,输入在我身后,那些电线上上下下,摇摇晃晃,他们是1和0。

他们在闪烁,但我坚持保持我的产量,假设我有十个手指,十个都是,那是十二十四嘣,十二十三嘣,这是我的十块钱,好啦,十比特十二十二十二十三嘣,与此同时,所有的输入都在移动,摇摇晃晃,摇摇晃晃,我不在乎。

我无视它,我不跟你说话,因为我是收银员,我得抓紧我的锁,我的十二十三,谁需要它,突然间,我得到了一个上升的时钟边缘在我的负载,眨眼,上升时钟边缘,丹做一个负载,作为一名收银员,我的工作是什么,看着我。

我转过身,顺便说一句,这些更好的已经稳定下来了,我怎么能不转身抓住,有些东西还在摇摇晃晃,他们最好已经稳定下来了,这是约定,这个上去,我收银机上不断上升的时钟边缘,我转身,我抢了比较好的底座。

十个稳定位,是10位寄存器10位稳定,好的稳住稳住帮你抓住,稳住稳住稳住稳住,锁定了,这是我的新作品,锁定它,我现在要,你现在可以回去了,它回到过去并改变,但我把这个堵在里面了,谁需要这个,我在喂。

谁需要这个,哦,阿里乌需要它,我要在这里坚持住,我们紧紧抓住你,明白了就用吧,当你需要他们的时候就去吧,我猜这是什么,这个在这里,我们大概5-12和1-5-13,我猜,我不知道,我只是想大声说出来。

不对五十三对十二十三和五五十三,好啦,走呀,走呀,我有我的朋友,你想你,好极了,你想过另一个,你拿到了,还有人要吗?我拿到了,我把它锁在里面了,我不在乎,它在它的这一边,我只是把它锁在这里。

空白再抓一次,好吧,在这一点上,我不能相信它,因为我不知道会发生什么,当这个上升的时候,这可以用于任何事情,我要抓住,好吧,这里和现在新的部分,我已经锁定了它,现在你可以回去搬家了。

所以问题是什么样的协议,当我转身,这个,最好稳住,在这之间,我们要谈谈这个,有一个完整的描述,在这个钟升起来之前,它最好是稳定的,之后我会给你更多的细节,但像这样最好能稳住很长时间,上升时钟上升前后。

我去稳住它,稳住了稳住了我们可以走动了,我也可能需要一些时间,直到你在输出上看到,这个上去,我的逻辑需要时间,把它拿出来给你,所以这是一个寄存器,现在呢,有趣的是,寄存器闪烁,我们经常把它们绑在钟上。

所以每一次心跳,每次心跳加速,不只是随机的,当有人丽莎戳了我一下,转身不,每一个钟,我转身,抓住它,现在锁定它,眨眼高,时钟走高,转身抓住它,然后锁住它,所以能够拥有这个是一种整洁,是一个有节奏的动作。

我把它作为一个时钟元素,这显然是一个状态元素,是的问题,告诉我亚当去,而且是的,是呀,登记册,从收银机转身到更好地抓住它之间的时间,短于一个周期,因为如果时间在流逝,这正是打破,如果你超频你的系统。

你把你的月经尖叫下来,收银机上说我得到了一个承诺,我只能把它给你,在一定的时间内稳定下来,事情开始变得有点古怪,我试着这么做,我给你讲个故事,我有吗,我有时间,我告诉过我在19年试图超频我的旧Mac。

哎呦,我的天啊,九十六我去了,我在网上买了,在亚马逊之前,我去了这个东西,我把我的信用卡,我得到了一个钟的小芯片,我会去把新的钟放进去,太棒了,他们给了我三个钟,因为我试过这个,我就像哇哦,这样快多了。

我在计时,我真的很高兴,一旦我去了这样的,哦就像就像,包裹在特殊的东西里,并说,不要打开它,因为就是这里,我说我要试试看,我开了特快的,我把它放进去了,突然间我在Photoshop里,这么快。

我所有的文件都被损坏了,我保存在Photoshop中的每一个文件,因为那个小测试被破坏了,太过分了,这就是问题所在,我违反了我内部登记簿上的规范,这几乎正是问题所在,我无法在文件中存储东西。

不管发生了什么都没有被报道,但实际上更快,我很好,直到我去了某个秘密的,只是有点太快了,我只是我有损坏的文件,迷人的,所以我就这么做了,这正是打破,违反该规范的寄存器。

我们以后再说,我们会处理好的,听听有趣的问题,能呐喊罐头,与此不同的三个,但这是个有趣的问题,我问了是三个真假从左到右,第一个问题,软件在硬件上的峰值能超过ISA抽象边界吗,这是软件,有硬件。

下面的软件能峰值看看他们有什么吗,用于优化,用于优化,第二,软件是否依赖于特定的硬件,ISA的实施,这是ISA规范,风险是这样的,五是一个规范,丽莎做了一件硬件,弗兰克·亚当制造了一个硬件。

但它制造不同的硬件,不同的人,不同的公司可能会使软件依赖于特定的实现,最后是时序图,重要,它们是否在eee工具包中提供关键的调试工具?从左到右三个平行问题,一二三左一为一,下一个是两个,右边的是三个。

不要把它看作是更高的一点,左边是左边,一个是第一英尺,第二个是下一个英尺t,最后一个问题是最正确的F和T,让我们看看我们怎么走,看那个,看起来就是这样,这是一个离家出走的人,我的天啊,就像里根蒙代尔。

我不知道,好像没人知道这个笑话,好啦,对呀,挺稳定的,所以我听说,我听到你说的话了,让我们看看,你能看出来吗?你说的是假的,这就是我正在读的,因为左边的是你说的第一个问题,我能看看硬件吗,你说的是假的。

我能依靠特定的硬件吗,你说的是真的,你能为调试工具做时序图吗,你说的是真的,所以我要把这个冷冻起来,我不知道怎么冷冻,但我要把它冷冻起来,好啦,冷冻,快照它,心让我们,我到这里来,我要开始做最后一个了。

我们的计时图,一种关键的调试工具,我的妈呀,是呀,当你调试关键电路时,任何一种数字电路,那些计时图,我给你看了一张软件图片,最后一个是真的,你能偷看一下吗,你还记得丽莎和我用c语说过吗,你可以说磅。

如果争吵,如果我有硬件做这个,如果我有那么难,我做这个,我可以优化我想要的任何东西,所以我可以偷看,我当然可以偷看,我鼓励你偷看和喜欢,编写代码,以便它能够处理这个和这个。

如果LISA有了新的加速器峰值,如果我有加速器戳硬件,我有,我们将执行这段代码,因为这会利用加速器,你当然可以偷看,并被鼓励第一个是真的,所以现在在,我能相信那个抽象说。

如果您的硬件和您构建并支持ISA,你最好支持整个isa规范,所以那个我不能依赖任何东西,我只要我编码到ISA,我的软件应该能工作,所以我不能依赖任何东西,您的代码网络,如果你在运行丽莎的优化器。

没有丽莎的硬件,不,这太疯狂了,你得是个工人,任何处理风险5的人,所以这其实是,假的真的还是假的,你们六个,我们暂停提问好吗?所以是的,你应该偷看以优化,但是没有,您不能依赖于硬件的特定实现。

那是那是抽象的,这个想法是如果你,如果你有一个硬件,你支持ISA,风险五isa,低于这个标准的人,这就像,我明天再给你换,与鲍勃,苏和丽莎的,拉尔夫的,我不在乎,谁在下面,你的软件不能依赖于此。

太疯狂了,那么我们得到了什么。

假的,真或F,我点击这个按钮,总之,这是一次多么好的演讲,我希望这对你有用,总之,时钟是我们系统的心跳,电压为模拟,我们量子化到零一,我们说过那个电路,延误是生活中的事实,以及传播延迟。

你看到了一些更正式的延迟,那里,两种类型的电路,组合逻辑,如纯函数和状态元素,如寄存器,转过去,抓住它,你就得到了它,我们会做更多的,星期三,谢谢大家。

P19:Discussion 5: RISC-V Procedures, ISA, CALL - 这样好__ - BV1s7421T7XR

嗯,让我们快速扫描一下,今天我们有三个主题,我们接到电话,我们有风险,五翻译与呼叫约定,所以不管你们想关注什么,其实呢,有点像那样,对不起,我们有一点回声,你能把表格,或者任何人,你不知道,哎呦。

只有伯克利的电子邮件吗,给我一秒钟,是不是每个人都很难融入其中,好啦,请举手召集会议怎么样,我得到了一对夫妇的手冒险,五翻译,好啦,然后举手等待召唤,那里没问题,整个,嗯,对不起,我也有变焦的人。

但每个人都会说,呃,这么叫,大家都没意见吗,从打电话开始,假设我们能做到,接下来我们要召开会议,好啦,很抱歉这一切,是啊,是啊,真正快速的物流,你今晚有作业要交,然后呃,拟开展的项目。

下周三之前你还有一点时间,嗯,是啊,是啊,这周也没有实验室,是啊,是啊,所以我想看看大家都在哪里,所以让我们先从预先检查的问题开始,我给你一两分钟的时间,好啦,大家感觉怎么样,至少第一对夫妇,嗯一分一。

呃,所以它说t寄存器可能在函数调用中被更改了,但是A寄存器没有作为一个真假,少数人不喜欢那样,a寄存器用于返回值,所以很自然,至少有几个寄存器可能必须在函数中修改,把t寄存器,是啊,是啊。

所以我想可以肯定地说,一个寄存器和T寄存器,你必须假设它们在函数中被全面改变,我不能假设你可以依赖他们,一分怎么样,两个,你的盒子,所以另一个寄存器可以用作参数,传入指向数组的指针,你必须遍历数组。

你必须增加指针,嗯,即使它不是返回值,它仍然可以在您的函数中修改,您可以有两个以上的返回值,您可以使用所有的a寄存器作为返回寄存器,是啊,是啊,还有其他问题吗?堆栈应该只在函数的开始和结束时操作。

牧羊犬存放处暂时安全,我们同意吗,我不同意,我们确实使用堆栈作为序言和结尾,对,我们想保留我们的寄存器和回信地址,但是假设函数中的寄存器用完了,我们只有,我不知道有多少s寄存器和t寄存器,但你知道。

说你认为你十二岁,嗯,假设在函数中需要更多的局部变量或临时变量,你必须暂时在堆栈上存储一些东西,并稍后在函数中检索它,是啊,是啊,你肯定会这么做,因此,堆栈不仅用于序言和外延,一点四怎么样?

编译器可以放置或输出伪指令,编译器发出的伪指令,我得到了一个假的,有几个竖起大拇指,又有一个假的,呃是的,编译器肯定能吐出伪指令,编译器应该创建最优的汇编代码,所以在某些情况下,伪指令可能是最佳的。

但是,汇编程序将解析这些伪指令,然后将它们转换回常规指令,好啦,一点五,编译器的主要工作是生成优化的机器代码,就像我们刚才说的,竖起大拇指,不同意,是啊,是啊,编译器和定居者有什么区别,保持这种想法。

我们一会儿就讨论这个问题,我想这会影响你对这个问题的看法,但是,嗯,是啊,是啊,只是效率问题,对呀,在一般意义上,喜欢你选择的说明,你把它们放在哪里参考其他指示,只是程序的整体运行时,是啊,是啊。

但是呃,这是假的,所以编译器的工作是创建优化的汇编语言,但汇编程序随后转换为字节码或二进制,然后为引用创建类似的表,我们马上讨论,所以这是有道理的,对呀,是啊,是啊,等等,是一点五,因为它说,是啊。

是啊,所以汇编器不是发电机组,汇编程序确实会生成机器代码,但它的工作不是生成优化的机器代码,编译器将创建优化的汇编代码,然后转换为程序集中的机器码,问得好,仅移动汇编程序生成的对象文件,未由链接器编辑。

每个人都很熟悉链接器,或者我们应该直奔主题,我们有一些好的,让我们只是,我们直接去打电话,好啦,所以哦错了。

iPad,这是我们的流程,我们有我们的编译器,我们的装配工,链接器加载器,C a l l,他们都有不同的工作,编译器将接受像c这样的高级语言,C加加,Java,我们将把它编译成汇编语言。

这份工作解释了没有,那不是,是啊,是啊,所以它将输出优化的汇编语言,然后它将进入汇编器,汇编程序将接收所有这些点的文件,我相信你对这个项目很熟悉,现在呢,您一直在处理不同的程序集文件,嗯。

汇编程序将创建一个对象文件,有很多不同的领域,嗯,我们一会儿就讨论这个问题,我想把时间花在目标文件上,链接器将获取这些字段,并基本上将它们组合成一个,我们有所有这些不同的文件,它们有不同的功能。

不同的代码行,链接器会把所有这些东西,把它们合并成一个程序,然后装载机是你的一部分,所以你的,你的加载器将把它加载到内存中,并运行到目前为止关于这个的任何问题。

所以编译器,我们谈了一点,它吸收了c c加铁锈,它会输出,说,就像风险5或x86,嗯,它将包含伪指令,就像我们刚才说的,或者它可能包含伪指令,它将包含相对寻址,所以说你的跳跃和你的树枝。

它们将相对于程序计数器,你们讲了一些关于翻译和说明的内容,你的跳转指令有一个立即的偏移量,所以你跳了三行,就像12的偏移量,对呀,记忆中的三个字,相对寻址,不在原始内存地址中,但就节目而言。

然后它也会有,我是说标签,当然,函数名称和循环,所有这些我都可以跟随支持,所以汇编程序,呃,这是整个过程中最重要的话题,现在,你们在项目中使用汇编语言,嗯,程序集将获取所有这些程序集文件。

它会很好地输出一个目标文件,让我们首先谈谈什么是对象文件,一个目标文件将有这两个表,符号表和重新定位表,呃,这些基本上列出了所有帮助我们,呃,计算机知道在哪里跳转搬迁表,辅助符号表,我们以后再谈。

一秒钟后,它创建一些调试信息,所以对于你的cgdb,为了让它能够运行,它必须生成有关程序的某种调试信息,我们有数据段,所以它只是程序中所有的静态数据,考虑字符串或整数数组,或者别的什么。

文本段将是机器代码,所以你的指令被翻译成二进制,和对象的对象标头,文件头会产生这样的偏移量,所以它会说,向下三两字节是文本段的开始,然后从那里向下200字节,这将是符号表。

它基本上会告诉你的计算机在你的文件中跳转到哪里,阅读某个字段,我们还在泛泛而谈,但这对每个人来说都有意义吗,让我们来谈谈搬迁桌上的简单桌子,嗯,我这里有一个必须在你的集会上做两次检查,有谁知道为什么。

在没有立即看幻灯片的情况下,当我们在您的汇编代码中逐行进行时,可能有对尚未定义的标签的引用,这可能是你程序中的12行,你的电脑不能读取那个标签,也不能确切地知道它在哪里,直到它真正得到标签的定义。

所以在第一关,我们要解决所有的伪指令,所以这就是伪指令被修复的地方,我们将用所有标记的声明填满符号表,所以我们的标签,然后标签所在的地址,我们还将用任何数据填充它,就像我说的,字符串或整数数组。

然后是全局变量,所以任何跨文件使用的引用或变量,所有这些都会被扔到你的桌子上,然后我们就有了搬迁表,它将收集所有这些向前的引用,假设你在做一个跳跃指令,你要跳到某个标签,在你的代码中,你的搬迁表会说。

就像我刚得到这个标签,我不知道是什么,就放在这里吧,等到第二关,我们已经填满了我们的符号表,与标签在第二道上的所有位置,然后我们就翻译过来,我们会填好的,好啦,嗯,是啊,是啊,然后在代码块中。

所以这有点像是在玩链接器,我们一会儿再谈,有人有问题吗,是啊,是啊,符号表本质上是所有的变量,文件像一个凸起的权利,所有其他文件都可以被引用这么好的问题,呃。

所以每个文件中的每个程序集文件都有自己的目标文件,它自己的符号表将包含与这个文件相对应的所有这些标签,所以当我们把所有这些文件合并在一起的时候,所有这些目标文件,某些文件可能需要引用此符号表。

因为它可能引用了另一个文件中的标签,它必须知道它指向哪里,所以是的,这回答了你的问题吗,是啊,是啊,就像跟进一样,所以搬迁表将包含所有,呃,是啊,是啊,你用一些井,我们马上做一个例子。

我觉得这样比较合理,是啊,是啊,所以在第二次传球之后,然后搬迁方会用它,嗯,这是个好问题,我想,所以它有点像占位符,这有点像告诉链接器,代码的哪些部分仍然需要用适当的地址更新,假设我们有一个文件。

我们马上就会看完这个例子,但如果它引用了malc标签malloc是对的,它将链接到一些标准库,你在第二道关前的重新安置桌会有一个很大的问号,它旁边不知道什么是malloc,但是一旦我们有了链接器。

把所有的东西都合并在一起,然后我们来看看搬迁表,看看哪些事情还需要解决,然后我们会把这些联系起来,是啊,是啊,问得好,好啦,嗯,所以让我们就这样过一遍,假设我们有一个小代码块,好啦,呃,标签定义在哪里。

如果你们想给我,这些有点像数字,上面写着,一号线,呃两个,然后在第10行和第11行的说明和说明之间有一个空白,依此类推,那么哪些是我们的,与,是啊,是啊,是啊,是啊,所以我们会有零行放克的名字。

第16行,我们完成了,所以是的,我们会找到标签上提到的,我们想在这个代码块中吐出一些标签引用,循环十五,是啊,是啊,所以你不会说定义是从0到10,他们大概从一到十,就像你一样。

我们设置的标签定义是实际的,就像标签名称本身,第11行,是啊,是啊,是啊,是啊,所以标签实际上正好对应于这条线,真的吗,所以你可能已经在你的项目中看到了,你也可以把标签放在这里,但在下一行代码中。

它们仍然对应于同一行,同样的指示,标签基本上就像一个位置,对呀,所以我们走过这个,呃,啊,否,哦不,我们走吧,所以说,当我们穿过这里,我们拿起这个放克的名字,这是一个定义,这是哪一桌的?一张简单的桌子。

是的,是的,会做得很好的名字,然后呃,我们就说这是我们的起始地址,好啦,就像我们节目的开始,我们计算所有引用的地址,所以会是这样吗,你知道什么?电脑的事对吗,根据OH PC中的病毒,是啊,是啊。

当你处理代码时,PC可能会改变,但是呃,是啊,是啊,我们就用它作为我们程序的基本地址,所以所有东西都将从这个基地址偏移,你得到了它的方式,PC确实改变了,当您的计算机运行您的代码时。

所以它是一个程序计数器,所以当你去指导和指导,你的电脑会增加,嗯,但我们会从一般意义上考虑这一点,就像我们的基线一样,转到下一行,我们有什么标签要拿吗,不,去这条线,呃,我们有一个循环哪个表的引用。

那是去,搬迁表,所以我们在这里放一个环,我们不知道它会去哪里,好啦,嗯,我们跳到了10号线,我们有一个关于Malloc的参考,是呀,呃,因为循环是一个正向引用,不是什么好的,所以让我们假设你。

我们已经发现你说的对了,好啦,标签仍然会在搬迁表上,或者它会进入,如果我们,呃,你就会,你马上就会明白,对不起,好好想想这个问题,虽然嗯,十行,我们参考木槌,也是一个外部正向参考,我们不知道它会去哪里。

所以我们要把它记下来,现在我们找到循环的声明,所以我们把它放在符号表里,这将是在抵消上的,我现在有我的备忘单,所以这将是开始,这是我们的基址的偏移量,然后我们跳转到这个引用来循环,所以这是一种,呃。

你指的是什么,呃,我们在引用循环,但现在它是一个向后的引用,因为我们看着我们的符号表,我们意识到好吧,我们有循环,我们很清楚它在哪里,所以与其把它扔在我们的搬迁桌上,我们把它划掉填上然后开始,加四倍。

我们只要填上偏移量,是呀,我们忘了11号线的事,就像我们对符号表所做的那样,对不起,我们有一个循环,但是我们没有时间,呃,是啊,是啊,我们得到了,那是下一行,所以我们定义的下一行做对了,那是我们的定义。

所以这直接进入符号表,向前传球桌怎么样,随着搬迁到,所以这将是开始,另外这里有偏移量,好啦,所以我们定义了,这是我们的第一关,大家都同意,等等,我们,哎呦,对不起,我们漏掉了一些东西。

我们在这里引用完成,我的坏好渔获,是呀,我看了一眼,是呀,我们参考了完成,这是一个前瞻性的参考,所以应该在这里,这也是另一个问号,各位各位,好吧,这个,那么第二道,所以现在我们要经历,现在呢。

我们知道程序中的所有东西,我们有我们的符号表,充满了所有的标签,我们要穿过这里,我们要去看宣言,我们不需要在那里做任何事,这里什么都没有,我们看到对循环的引用,现在呢,我们知道环路在哪。

让我们把它压出来,把它扔上去,我们看到对MC的引用,我们能做点什么吗,是呀,还没完呢,呃,四乘七,我可能算错了,对不起,嗯,我们看到一个关于木槌的引用,我们能做点什么吗,当我们看到一个引用。

或者当我们看到对标签的引用时,第一件事是检查符号表,符号表不包含它,然后我们把它扔到重新安置的桌子上,问题是我们的搬迁表已经有了这个引用,所以它是一个外部参考,它在引用另一个文件,所以这也是。

当我们在这里解决这个循环时,我们只是把它退出,我们用start+4乘以11填充这个,但在这里,这个malloc仍然是未知的,所以这将留给链接器,然后我们继续往下走,我们看到完成了,我们知道他在哪里。

开始加四次,呃,十六七岁,不知道,然后我们继续前进,我们就完成了,那是我们的第二道关卡,我们基本上就是这样使用这两张桌子的,这是我们记账的一种方式,因为我们节目中的所有引用都是有意义的,真的吗。

然后我们就到了链接器,徘徊者不仅会把所有的东西,所以它将创建一个头文件,嗯,还是对不起,它不会创建头文件,它将把这些目标文件,包括标题文本数据和这些表,还有一些调试信息。

我们的工作是接收任意数量的目标文件,一个可执行文件,我们将结合文本和数据段,所以我们整个程序中所有的静态数据,所有的文件,所有的代码行,所以所有的文本都将以一种程序性的方式放在一起,所以一行行。

然后我们还将解析所有的引用,所以我们要找到所有剩下的,把这些表格合并在一起,所以我们要跳到哪里,此可执行代码提供给加载程序,加载程序将读取标题,找出哪些段是我们的文本段,我们的数据段,嗯。

我们要在堆栈上创建空间,请记住,我们仍然有堆栈帧,我们将在主存中创建空间,以便执行实际的指令,呃,我们要初始化寄存器,为运行和运行程序做好一切准备,拿一个六十二,如果你有兴趣了解更多关于这些,是啊。

是啊,所以在我们进入通话问题之前,有什么问题吗,是啊,是啊,你跟我说,呵呵,哎呦,它会出现在中央索引帖子上,在布兰登和基尔的讨论幻灯片下面,让我们开始吧,这需要一分钟左右,好啦,呃,多少次。

我想现在应该做过头了,但我有两张通行证,两张通行证,好啦,是的,是的,我们要做两次传球,呃,为什么,我想给我一个解释为什么,我们走两条路,第一部分和第二部分中的正向引用中的所有定义也是如此,在电源上。

是的,是的,所以我不打算把这些都写下来,但是但是是的,所以一次传递所有的正向引用,标签的所有定义,还将静态数据存储到符号表中,然后是第二步,尽可能地解析重新定位表,调用中的哪一步解决相对寻址和绝对寻址。

让我们从相对寻址开始,它是一个编译器,汇编器,链接器,装载机,它是相对的,因为我们是相对于地址做的,是啊,是啊,所以我们在汇编文件中使用了这个基地址,一切都与基址有关,嗯,绝对寻址怎么样。

问题是如果你看到,编译器,呃,创建程序集代码,然后对相对地址进行操作,因为这是汇编程序的输入,我们说,就像在一些相对的想法中,是啊,是啊,是啊,是啊,它还会吐出符号表,这些符号表都包含相对寻址,是啊。

是啊,所以绝对寻址是通过,从几个人那里得到了一个链接,是啊,是啊,因此链接器将在这些不同的文件中获取所有这些相对地址,并为所有文件一起创建绝对地址,是啊,是啊。

解释在那些特殊情况下它是如何像现在这样解决的,是啊,是啊,所以它吸收了,标准,就像你在这里看到的,它将接收所有像标准库文件这样的文件,当你喜欢标签的时候,包括标准库,是呀,是啊,是啊。

所以它将进口这里需要的任何东西,Dan或Lisa谈到了一些动态和静态链接库,也有一点需要调查,如果你有兴趣,好啦,呃,这其中的六个主要部分,我觉得我们刚刚经历了,有没有人想过这个问题。

还是你想直接进入另一个话题,经历过的举手,它只是在重复我们一直在谈论的一切,如果有人还不确定,我们有呼叫约定和翻译,我看到更多的人举手等待翻译,每个人都同意这一点吗,改为那样做,好啦,好啦,好啦。

让我们做吧,所以我们有风险五翻译,所以我们有这些组装说明,真正低级的代码代码,这直接转换成二进制,通过计算机或通过,所以大会将接受这些指令,把它变成二进制,所以我们需要知道这是如何翻译的。

这是由我们所有不同指令类型的表描述的,这告诉我们不同的领域,在不同的指令类型中,你注意到了吗,即时类型将有这个大的部分,用于上介质,对于非常大的介质,所以我们明白这些必须以某种方式转化为二进制,但是。

让我们试着解决一个问题,我觉得你们已经有家庭作业的问题了,在这个东西上,让我们做一个,然后我们会走过它,然后我们再经历另一个,所以我没想到会有这么多时间来做这件事,所以说,嗨,让我们进入第一个,所以说。

我们有添加,我是1×0负2×4,有人想建议第一步吗,查看代码,是呀,看那个,我发现我们的代码,是呀,所以让我们来弄清楚,我也把这个复制了一遍,我们有这个添加,我在这里田野,这是操作码,就是这种类型。

这是F3代码,所以我们把这些写下来,所以操作码是0,我们的f3是,还有什么领域,所以是什么类型,那是什么类型,我我打字是的,所以我们要看这里,我们已经拿到操作码了,已经有F 3代码了。

我们这里的RS是什么,就像寄存器名x 0一样,是啊,是啊,所以1等于0,在二进制中,全部为零,全是零,到底有多少个零,保持事情一致,好啦,然后我们有一个第三个字段,在这种情况下这是可能的,其中一个。

如果我们去,这张桌子我已经听过了,但是x 9是我们的s,在二进制中只有9,所以零一,零零一,好啦,所以我们得到了我们的第三个,我们找到一个,所以现在我们有了直接场,我们的中负数是多少。

所以我们必须把它转换成二进制,我们如何选择补语,我们先来,这只是一种,我是怎么做的,我们先,呃,在未签名版本中表示,然后翻转位,每人加一个,没问题,好啦,所以首先,我们的直接比特是多少,我有七个。

其他人,十二,是啊,是啊,我们这里的直接场是从0位到11位,所以我们需要一个12位的字段,让我们在这里代表二四,2的最大基数是16,所以这是我们的八位,所以这里是一个,这里是一个,归零归零归零。

大家跟着这个,一一一一零一一一加一,表示未签名版本,翻转了比特,增加了一个,现在我们得到了负2-4的补表示,是啊,是啊,你们知道为什么J型翻转时钟,比特,只要看看一般的J型媒体,据我所知。

主要与硬件有关,你知道,当我们开始研究数据路径时,你会学到更多关于这一点的知识,是啊,是啊,你在打字吗,从字面上看,意思是上面的二十位,或者喜欢,那只是整个指令的索引,从3个1到12个,是啊,是啊。

所以那些,这些就像直接的比特被显式地传递进来,是啊,是啊,让我们把这个用x写好,其实没有,让我们把所有这些东西结合起来,所以我们的第一个场是我们的直接场,正如我们所看到的,我们有我们的直接。

RS一放克三操作码,所以说,所以我们有一比一一比一,零,一零,零零,所以这是我们的直接,接下来我们有一个RS,也就是四个零和一个额外的零,我们有F3,也就是零一,零,零一,然后我们的操作码。

然后这个直接到x,也就是F E,所以你只是把一条指令从程序集翻译成二进制,我们可以很快做相反的事情,我们有一分钟,让我们谈谈我们将如何做到这一点,我们都看到它是如何正确翻译的。

所以我们得到这个十六进制数,你的第一步是什么?它变成二进制,把它变成二进制,查找操作码,是啊,是啊,一旦你有了操作码,然后你就可以把范围缩小到F3,三之后将它缩小到一种指令类型。

然后你会发现你有一辆RS-One还是一辆房车,你会发现如果你有一个即时的,好啦,如果你们能够,我真的很感激你对这件事的反馈,帮助我了解你们想从中得到什么,你是嗯,放置项目,所以退出时使用错误代码退出。

呃,假设有一个错误,就像退出程序一样,你一定要看书吗,增加堆栈指针和备份工作,你差不多,嗯,在这种情况下,我会推荐什么,比如在你做任何与堆栈相关的事情之前处理这些案件,好啦,是啊,是啊,所以差不多。

是啊,是啊。

P2:Lecture 2: Number Representation - 这样好__ - BV1s7421T7XR

但乔治·弗洛总是咔嚓咔嚓。

我的点击器现在不起作用了。

我不知道为什么这么高兴,哎呦,有好的好的,太奇怪了,好啦,嗯,我们总是在新闻里做计算,计算,今天的新闻很遥远,考试前扫描学生的房间,在考试前必须扫描房间的人,举起手来,法官说那是违法的,不能再这样了。

侵犯你的隐私,有趣的谈话,在这之后谈话还继续吗,但那是,显然有一个民意调查,你知道的,在尝试测试完整性之间的让步,你可以想象对了,人们可以把所有这些东西放在房间里,所以你想证明房间是干净的。

与学生的隐私,房间里可能有东西,比如驾照申请或者其他可以定罪的东西,你在房间里应该有一些隐私,所以我看到了那边,我也看到了试图保持测试,你知道远程考试的完整性,那就是拉,拉啊拉啊推,现在很有趣。

从现在开始,法官说那是违法的,我们会看到它在哪里,跟进有趣的对话,好啦,好啦,谈数字表示,我不记得短语数字表示数据模拟到数字,顺便说一下,有讲义,有人要施舍吗,举起手来,如果你想分发,我们今天有讲义。

我们能不能,我们能在给人们的施舍上得到一些帮助吗,我可能会施舍给你,我现在不想让你做笔记,所有的笔记都以PDF格式在线,如果你是那种,我喜欢笔记本电脑,用笔记本电脑做笔记,用平板电脑做笔记,如果你。

那很好,如果你想要施舍,把你的讲义留着,我们会把那些讲义给你的,很高兴见到你,我的朋友,我们有给人们的讲义,你可以在页边空白处标记,好的然后我们要做的是,我们会数出有多少施舍,下次我们就少赚一点。

所以我们今天给大家做了一个,但如果你不想要,不要拿,然后我们将来会拯救更多的树,好啦,但是把手举起来,我们会把那些讲义给你的,将来我们也可能把它们放在门边,好让你进来的时候拿上,我们会我们会跟上节奏的。

数据嘘,把手举起来,我们会给你的,数据启动模拟,世界是模拟的,世界上的一切都是模拟的,不启动数字,现实世界是模拟的,导入模拟信息,你得做两件大事,第一条,这里有一条曲线,这里有一条曲线,好啦,模拟信号。

这可能是振幅电压什么的,这是模拟信号,你要做的第一件事就是问嘿,你声音有多大,你声音有多大,你声音有多大,每隔一定时间取样,你以前听过这个词吗,就是这个让这些小棒棒糖取样,你问价值是多少。

当时的数值可能是3。56。2。3,好的,好的,接下来就是你说得很好,那是一个很难储存的数字,这是一个非常大的无理数,我们必须量化你有一个尺度,那个尺度说得很好,我们要在这个标尺上用一些斜线。

我们测量每一根棒棒糖,他们有多高,所以有两件事,一种是你试吃棒棒糖,这是第二张照片,然后你问滑泵在某种测量上有多高,在有哈希线的码尺上,然后你说什么,不管是什么,不管是什么,有多少哈希,那就是。

这就是量子化。

好啦,我点击,我的事情不是在这里我们去,但是,不一定是天生的模拟,你可以有存在于计算机中的数据,一个艺术家的程序员的想法,看看这些美丽的图片,这些漂亮的三维图形,我在这个部门获得了图形博士学位。

我在拍这样的照片,我喜欢这东西,所以你可以让一些人进入一个程序,做一些惊人的射线追踪,这个的图片,这些都不是来自对世界的采样,这都是在电脑泡菜中诞生的,我还没告诉你什么是比特,但是一点点。

这种想法在计算机中存储了一些比特可以代表任何东西,例如两个六个字母,我可以用五个比特,为什么那五个比特是五个电灯开关,五个灯开关有多少种不同的设置,嗯,每一个都是一个,一为零,好的开或关。

五个不同的电灯开关有多少种不同的设置,三十二二二,两次两次两次,每一个都是两个的选择,所以有三个两个可能的选择,我当然可以在那些里面储存两个六个字母,所以这些灯的设置之一是,另一个设置是B等。

所以这是相当强大的,所以如果你说好,我还希望能够做标点符号的大写和小写,我可能需要七块,事实上,我们存储了八个比特,如果我们能做到七位,八位称为ASCII,所以如果你想说,我想在计算机中存储一些字符。

问你想问,我站着看,怎么样,呃,以美国为中心,那就是,你知道的,因为他代表着美国信息交换标准代码,因为我们代表了我们自己的字母表,不是另一个字母表,对呀,所以很明显我们应该给一个美国人贴上标签。

我们只是在储存,B和C不是,每个国家都用bs和cs作为他们的字母表,但事实证明,一个Unicode小组说,你知道的,让我们更笼统地说,外面的世界,让我们试着存储人们在字符集中使用的其他符号。

所以unicode作为一个开源联盟出现了,他们现在有不同的套件,所以八位有点落后,与ASCII兼容,但你也有十六位,二到十六是个很大的数字,大约一万六千,二到三十岁,二大约是四,当二三二三两年,四百万。

不过,我们马上就会讲到,好啦,嗯,我告诉你吧,那是很快的事了,好啦,40亿所以你可以拥有40亿件东西,所以这很酷,四十亿个不同的字符,四种不同的符号,图片,你可以有一个表情符号,是呀,里面也有表情符号。

所以这真的很酷,真的很丰富,非常好,您还可以具有逻辑值。

真假零和一,你可以做颜色,我可以选择颜色,我是说碎片可以是颜色,是呀,因为比特可以代表任何东西,位代表情感,情感呢,真的有点可以做情感,愤怒,零零快乐,零一收到,如果你能列个单子。

您可以为它分配一个位模式,那不是很酷吗,所以即使是情感,地点,地址,命令,这是要记住的关键,把你的笔记圈起来,绕到这边来,这是我们要测试你的一件事,这是我在这里测试你的第一件事。

N位最多是N件事的2比N,如果你有两个,如果你有两个以上的N个东西,你做不到n位只有n的2次方可能,n位设置,好啦。

很容易,这是我们第一次互动尝试,我们试试这个,这是一个叫做民意测验的系统,到处都是,免费的,对校园里的每个人都是免费的,我们试试看,这里,我们走,你得有个问题,你要用多少位来表示,哇塞,我们试试这个。

用多少位表示圆周率,一比九,因为圆周率是三点,一个四,所以这是三个人的这种模式,关键是看不见的,四个人中就有一个,一共是九位,六十四,因为Max和计算机有64位,机器的每一个比特或无穷大,好啦。

我们这样做有两种方法,你要么,如果你现在有电话,我们试试这个,这都是免费的,我只是想知道是谁干的,这只是为了好玩,文本ddg,我名字的首字母,丹加西亚博士二二三三三,一旦你这样做,你进去说,哦好吧。

欢迎到任何你想投票的地方投票,然后你用A、B、C、D或E投票,好啦,试试看,否则你在电脑上就可以走了,去投票,EV网络,斜线DDG,你会有一个很好的小界面,让我知道,如果你有什么麻烦,我们试试这个。

所以你试着给我竖起大拇指,如果你让它工作,如果上面说,哦,我得到了它的工作,我看到了,哦,我看到一些拇指,是呀,让我们试试这个好吗,太酷了,好啦,我要等到再试一次,有机会投票,稍等一下,哦不,哦当然。

我听到了我听到了开头,我听到火警的声音,我就像,哦,我的第一次演讲,第二讲,第二讲,好吧,我们开始吧,你要投票,为你的投票和竖起大拇指快速休息,点个赞,如果你做完了,竖起大拇指,如果你做完了。

让我看看房间,竖起大拇指,有些人还在点击,我看着人们低头看着,我要等,再过半秒打电话,这就是丽莎和我要做的事情,每次演讲,所以你习惯了,也许你有,也许你会记得二二三三三,你发短信DDG。

会有一种不变的东西,这就是我们要做的其他选择题,整个学期,好啦,我们好吗,每个人都投了票,每个人都投了票,你把你的电话号码,是呀,好啦,让我们看看会发生什么,我只是要去点击这个按钮很快发生。

希望这行得通,我点击右边,让我们看看这是否有效来吧,给我一些爱的点击器,来吧,来吧,给一些左边的点击器,没什么是不做的,我得手动点一下。

让我试试,他们应该告诉我答案,让我看看,哦嗬,那不是很酷吗,你没必要把幻灯片留在外面,这是个很酷的功能,男孩无限有趣,我要问你一个问题,丽莎,我要用这两个手指在二进制中,告诉你绕了多少圈,绕了半圈。

我绕了半圈,我要用我的四根手指用二进制告诉丽莎,丽莎,有多少次我绕了半圈,那么我走了多远,如果我做了,我走了多远,如果是一个,总圆周率到底有多远,等待堆,我皈依了,我皈依了。

我用一个比特告诉了一个圆周率,这个怎么样,我必须喜欢,盖上,所以我让她明白,零,一个圆周率,两个圆周率,三个圆周率,用两根手指,那是四种选择,但不知何故派被调职了,刚刚发生的事,那不是一个零,答案是零。

如果我想表达一个概念,我们都同意,我按圆周率计数,她懂得圆周率,二π三π,她用两块做了馅饼,告诉圆周率前面的数字,所以圆周率是免费的,你们知道圆周率是免费的吗,我在圆周率前面给出n,零位。

如果你想要圆周率,或者不是圆周率,那是一点,但我没告诉她,不是派告诉你的派,但协议是,一直都是圆周率,我给你一些数字,我不需要任何,只需要转换圆周率,这是个有趣的想法,这是一个完整的元的事情,说说那个。

你的朋友很酷,我喜欢这个诡计问题,你们都错了,我爱,那是我最喜欢的部分,好啦,我的点击器不太高兴,让我继续点击这里好的。

找不到的,这应该是这个总结,好啦,我们将讨论二进制十进制和十六进制是隐藏网络。

好啦,我想让你们都知道数字和数字的区别,谁听说过罗马数字,举起手来,谁听说过罗马数字,没有罗马数字,只有罗马数字,为什么这个滑梯我们开始了,有一条抽象的线,我喜欢这个,如果我教数学家,他们就像。

什么是抽象线,我只明白,我知道什么是抽象线,那很酷,有上线也有下线,记住那些事,线下是一个数字的概念,数字的概念是线下概念,我想让你们都呆一会儿,你就迁就我吧,闭上你的眼睛,闭上你的眼睛。

只是每个人都在四处张望,闭上你的眼睛,想想数字四,你的大脑正在为你形成什么,只有四个,想四个,好啦,睁开眼睛,好啦,你想的是它的概念的数字,他们只有一个,只有一种东西,我们都同意,它在零点的右边。

在号码线上,四点了,他们有多少种表现方式,那些是数字,这个是上面这种三角形的东西,这一次就像四个U R wao IV的符号,开始了,那是四个,我在你脑中传达了一个数字,你拿到号码了,好啦。

你的意思是在你的大脑里,你说四个是什么意思,但我把数据传给你的方式是通过一个数字,数字是数字是制造数字的符号,所以四十二四二由两个数字组成,四二,那是数字四二,代表四二的概念是那种很酷的。

所以这是一个罗马数字,iv是表示四的罗马数字,好啦,所以数字对数字,我可能会犯错误,但你猜怎么着,没有二进制数,有二进制数字,因为线以上的东西是你如何正确地表示它们,有十六进制数字,有十进制数字。

但是没有二进制数,所以人们说嘿二进制数,你得阻止他们说没有二进制数,数字是一个概念,你说的是二进制数字。

我可能会犯错误,因为我从小到大一直在想,但他们不像丹那样帮我纠正我,我想你说的是同一个号码,好啦,十进制,看这些以十为基数的数字,因为这个数字代表3771,我们要写下标告诉你什么基础,它是三乘以十。

那是什么意思,三十七是什么意思,如果我有的话,我今天赚了3771美元,或者今年的美元,说那是一大笔钱,那到底是什么意思,好像我很慢,我一年级的时候学过这个,是啊,是啊,但当我学习和改变基础时。

它会帮助你,这真的意味着三倍十到三千,记住这是三千一个大盒子,你只有三千加二百加七十个,你还记得他们展示了一个小正方形,十乘十,对然后一个一个,那么当我从滚动中改变底座时会发生什么,当我想到二进制。

记得我有十个不同的数字,为什么我有十个数字,我们稍后再谈,如果我想用两位数,零和一看看这个,二进制数字变成位,那不是很整洁吗,我和TS变成了碎片,这就是比特的意思,位表示二进制的BI,和数字的TS。

那很酷,希望你们今天能学到很多东西,顺便说一句,请随意领取讲义并写作,所有这些东西都写下来了,如果你只是在一张白纸上写,讲义会帮助你,不必用一些幻灯片复制,在你给幻灯片做标记之前,幻灯片就发完了。

所有这些没有人应该是我,你做你想做的,但是一张白纸在做笔记,我是想帮你,好啦,所以按手,如果你需要,二进制的一零一是什么,顺便说一下,你怎么知道这不是10101井,你一次也没有,突然之间,我想释放海妖。

现在有多个基地,然后我们得谈谈我们说的是什么基地,就像我说跳,你说我对全息甲板上的电脑有多兴奋,我说我想喝茶,上面写着,你要冷的还是热的,现在我说1,1,0,1,你说什么基础,丹。

所以我要把它们写在一般的地方,如果我没有基础,我们将永远是十垒,像这样,或者我可以用二进制的意思来使用这个词,暗示了一些其他的基础,我会写在这里,你会怎么做,说零b,如果我有那就是零,不是一个O零B。

那意味着什么,下面的内容都是二进制的,二进制数字,不是数字,但在数字意义上,治疗是二垒,或者我可以在这里写一个下标,上面写着基数2,好啦,所以一个一个,零一井,我以前是怎么做到的,记得吗,就像10比3。

10比2,十是多少十是基数,所以这意味着每一列在某种程度上,每一列都是那个幂的基,我们从右边开始,那总是一个,最右边的列总是一个基到一个是基,这是我有多少个碱基,底座平方底座2 3是底座对底座对3。

不管碰巧是什么,你得到它的底座立方体,所以如果我说1-1-0-1,这实际上意味着这些系数在这些项前面,所以是一乘以二的三,一八一四不二一八四一是十三,那不是很酷吗,所以在二进制中。

或零b一零一或一零一基,二是十进制的十三,这就是如何将二进制转换为十进制,我们要做所有这些。

你知道的,等一下等一下,等一下等一下,对计算机科学家来说,还有其他有趣的基础,其中一个是十六进制的,十六进制很好,除非我以16为基数,那很好,除了那样,我们只有九位数,我们用来表示数字的九个字符。

我们得到了,如果我们需要,又多了六个,我们得有权利,我需要零到九,那是十分十分,从零到九是十件事,我还有六个,我还需要六个,我们怎么能借已经订了的东西呢?人类知道是有秩序的,或者至少美国人知道。

那些信呢,所以一旦我们过了九点,我们将开始使用字母,因为无论是人类还是美国人,你知道吧,所以一个,顺便说一句,你可能会认为,嘿,看看十六进制并不能真正翻译成其他语言,如果他们没有通过,F。

那不是很有趣吗?让我们想想我们是多么以美国为中心,当我们想出这个的时候,所以A是十,如果你看到角色,十字A,那意味着那个地方得了十分,B是十一,C是十二,D是十三是十四,F是十五,你可能会说,哎呦。

等一下,我以前见过,当我在html上看像颜色之类的东西时,是啊,是啊,F是最大的一个,F都是1,因为f是15,都是四个人,二进制中的一个,五和十六进制是什么?现在我们做十六进制到十进制。

那么在这里你如何表示,你可以在底座上说一些符号,对呀,那很好,或者我可以在零b之前说零x,现在是零x,零x 5或5小于16,到目前为止,一切都好,“好吧,这是什么?”,我们做同样的事。

我们把这些柱子做成十六根,基数16是多少,十六点到零点是正确的,大多数列,十六分之一是下一列,十六的平方等于二五六十六除以三等于四十,九十六完美,所以我们开始了,我有一个,这就是我必须查的,现在a是十。

或者我能记得十点十六分,一共一百六十五块一,所以1六十五加5等于1六十五,很酷吗,你可以这样想,作为,亚马逊盒子里你想卖给你的鸡蛋,让亚马逊把鸡蛋运给你,然后运给你,其中一个盒子里装着一个鸡蛋。

是一个很小的盒子,装一个鸡蛋,其中一个有十六个蛋,其中一个有两到六个蛋,大箱子顶住六六,好啦,所有这些都在说,我有十六个盒子中的十个,就像如果我哦,货到了,我得到了十六个中的十个,我得到了其中的五个。

我得到了多少鸡蛋,做一些数学十六乘以十加五,那不是很整洁吗,原来你是这么做的,想想亚马逊鸡蛋盒,想想这个挺酷的,谢谢你。

亚马逊,顺便说一句,每个垒都是十垒,就像等等,我喜欢这部动画片,我喜欢这部动画片,住在四号基地的外星人,为什么?因为这个外星人的手上总共有四根手指,上面说有十块石头,因为他们在四垒,他们看着四块石头。

他们说有十块石头,十,基数四是一,四和零一,所以他们说有十块石头,我说,哎呦,你一定是用了基本力量,参见我用十进制,我就想等等不,我用十进制,那个外星人知道零一、二、三和基地是什么,他们称之为十进制。

他们只知道这些,那不是很有趣吗?只是把它扔在那里,想想那种元,是的,每个地下室都有一个基地,一个基地有点奇怪,是啊,是啊,这个只是所有的,对了,基地一号是一元的,就像监狱里的日子,你喜欢进监狱吗。

一直在监狱里,我不知道,我没事,哼,那是我以前的时光,从监狱出来没关系,但不不,否,不羞耻的人,你知道,人们进监狱,出来吧,人犯的错在监狱里没关系,你的标记是这样的,就像理货标记,对呀。

你在监狱里呆了多少天,那是最基本的,继续为每个人砍一刀,好啦。

开始了,我们开始吧,我已经告诉过你如何把两个东西转换成十进制二进制十六进制,但我还没告诉你怎么回去,所以让我们来谈谈返回的算法,对每个碱基都是相同的算法,其实挺酷的,开始了,例如,十三记忆四是。

你知道13是什么吗,当时是1:01,但让我看看我有十三个,什么是什么在二进制中是什么,它是这样工作的,你从柱子开始,基于零基,到一垒到二垒,敬三个,你以前见过的东西,你写这个,所以这是在我们的十进制。

我们会写八四二一,这是它的工作原理,你去,顺便说一句,你可以继续写更多的专栏,你可以写16年,我们开始吧,这里左边有一个16,开始了,这是算法,很简单,从左到右,你从左向右,你说列小于或等于n有多奇怪。

这是我对此的看法,和我在一起,我要运回13个鸡蛋,到亚马逊,我运的每一箱都是我的麻烦,我得把它包起来,我要付邮费,我想要尽可能少的盒子,跟我说,所以我有一个二进制的。

我有一个能装16个鸡蛋的盒子我有一个能装8个鸡蛋的盒子,我有一个能装四个盒子的盒子,拿着两个盒子,拿着一个,亚马逊,不会拿一个没有装满的盒子,这只是数学上的智慧,你有一个完整的盒子。

所以我看着我的十三岁,我去,哦,16美元看起来多汁,我能在16美元里买13个吗?是呀,但我会有差距吗,哦,我有一个缺口,我做不到,所以我会用零,16个盒子有意义,我装不下13号和16号的箱子。

没有任何缝隙,所以我不会用16,我扔六十啊,那是个很好的盒子,我喜欢那个盒子的形状和颜色,好啦,我不能用那个,我有一个八盒,八个盒子里我能拿回多少鸡蛋,要做多少盒,我有足够的钱来填补至少一个,八块钱。

是呀,二进制中我能放多少八个盒子,只有一个,那么我该怎么看着我,我说,我有足够的钱吗,我做了,我在那里放了一个,然后我问自己,有什么问题,我还剩多少,好啦,13减去8,我得到五个。

现在我一直走在这条线上,好啦,我要用那个盒子,我买了四盒,我有多少鸡蛋够装满一个四个盒子,是呀,一个可以装多少盒,所以我把它填进去,放一个,做同样的事情,五减四等于一,我有两个盒子。

我可以把剩下的东西装满一个两盒的盒子吗,我画了一个零,现在有意义了吗,好吧,把它零,继续走过去,我还剩一个,我填满一个,我就完了,好啦,你对此很满意,这就是算法,我们现在试试,再用力一点。

我们去16号基地,开始了,好啦,我有一百六十五个鸡蛋,我有一个大盒子,有46个圣诞节用的大盒子,对96岁的人来说,这是一个美好的圣诞节,我可以在四十六个盒子里装满一百六十五个鸡蛋吗?

我可以在一个2-5-6的盒子里装满65个鸡蛋吗?我可以保持,我可以从一个大盒子开始,所以你可以继续零,你可以一直留下零,任何数字,你赚了多少钱,二三做到了,你还做了0 0 2 3,是呀。

你可以在任何数字的前面有零,所以我说一百六十五,开始了,我至少可以在一个16盒里装满65个鸡蛋吗?是呀,我可以装多少箱,我写十个吗,在那里我写了一个看,这是关键,你必须转换小,将其转换为,好啦。

一旦我装满十六个盒子,我还剩下多少五个,做同样的事情,循环循环五五,到目前为止,一切都好,那很酷,所以现在你可以在理论上转换,二进制和十六进制到十进制,十进制到二进制和十六进制,来来回回,还差一个。

如何无缝地从二进制到十六进制,这就是下一张幻灯片的内容,让我说到那。

我必须,我想我得离得更近,让我看看,有道理,我们开始了,好啦,二进制十六进制是,他们都很容易,请不要,不要从小数点回到X,就像嗯,我需要从这里开车,我要从这里去奥克兰,从旧金山到奥克兰。

所以我知道有航班,从纽瓦克到奥克兰,那不是,不要不要走,不要走太远,别进小数再出来,呆在家里,保持六进制好的,二进制到十六进制很容易,总是在Pad上留下零,以生成四个四位值。

为什么这个表是单十六进制数字映射的表,我的朋友们,这是第一个值得纹身的人,我会提到更多值得纹身的事情,并说,你想做个临时纹身吗,或者一些很酷的东西,把二进制十进制十六进制转换表,我也鼓励你们记住。

因为我们都背下来了,所以请想想记住,这很酷,好吗,所以我们开始了,我得到了1 1 0 5个不同的二进制数字,丹说了什么?我必须在左边零垫,使它至少是四个长度的倍数,所以我要把它归零。

然后你就把它们映射成四个,但分成四块,四个大块,四个大块,因为你把它变成了4的倍数,你永远不会有任何奇怪的剩余,问题是为什么,你不知道为什么如果你跳过了一步呢,你跳过向左填充的步骤,你从左边开始。

看我的,答案是一个,E好的,一一四一一,零是一,E,如果你做错了怎么办,没有左填充,看我在这里我们去,我可以从左边走,一个,一个,一个,已经结束了,你错了,答案里没有F,答案是一个E。

所以你不能从左边走,除非是四的倍数,或者你可以从右边走,你可以从右边走,那很容易,左垫然后从左到右,好的或者从右边开始,如果你对二进制做十六进制,真的很简单,例如,如果我给你一个E。

你只要查找它们并将它们连接在一起,一e变成零,零比一,一一一零代表e,现在你得到一些零,你就把它们扔掉或者留在那里,没有,同样的数字并不重要,所以二进制到十六进制再回来,容易,他们两个。

简单的十六进制到二进制比另一种方式更容易,因为你不能在二进制旁边犯错,如果你留下0,那没有错,如果你把二进制变成十六进制,你可能会犯错误,如果你从左到右不填充它,到目前为止可能是错误的,好啦。

再见,哈克斯这么多只是花了一点时间比我想象的要长,让我们看看我在这里做得怎么样,好吧,现在四个比特是一点点,因为八位是一口,像计算机科学幽默一样咬一口,这是一个,咬了一口,字节听起来像b i t e。

你说吃半口,这是一点一滴的一点一滴,好啦,两个比特是什么?呃,我不知道我喜欢什么,我不知道,所以我们来了,咬一口,所以我之前看到的一个十六进制数字对吧,一个十六进制数字是你看到的16个东西,那是一点点。

好啦,所以那是一口,这些是我给你看的16种不同的咬在右边,好啦,两个十六进制数字,两个十六进制数字,让我们想想两个x数字转换成多少东西,二百五十六件事,零到二五五,为什么让我们让我们做更多的数学。

两个x位数在这里是4,每个十六进制是四位,4位加4位是8位,二和二五十六是多少?所以两个x位数分配给六个东西,其实你可以看到我,我可以在变焦上做这个吗,我不知道这在变焦上行不行,如果我这样做并放大。

注意你在磅号之前看到过这种代码吗,然后像这些希腊的东西,这就像,D零三六七F,那是一种颜色,那是零到百分之五十五的红色,零到五份绿色,两两五蓝色,当你把它们放在一起,你得到了这种美丽的粉红色,整洁吗。

所以如果你想知道,这是如何工作的,现在就是这样,你就像,哦,实际的部分是什么,我可以这么做,因为我可以给它一个十六进制到二进制,现在呢,实际数字是多少?从你知道的,二五,两个零到两个五这三个中的每一个。

我可以改变他们,挺酷的。

现在我们用哪个底座,我们为什么选择这些东西,小数对人类来说很棒,你知道的,如果人类在看一堆二进制数字,男孩让他做黑客肯定更有效率,它的效率提高了四倍,这是二进制数,我没说,数字数字得抓住我自己。

嘣看这有多小,这是十六进制数字,效率高得多,以四倍的优势,所以我们喜欢,例如,如果我必须转移颜色,如果你有,哎呦,我要做一个新颜色,我的网页我需要输入24个不同的1和0,讨厌的六个不同的十六进制字符。

小菜一碟,对呀,所以这很有趣,所以十六进制真的很棒,但对算术来说很糟糕,如果我想做一些二进制,算术真的很糟糕,二进制对这个很好,好啦,三二基十等于三二基十等于零二十,因为2乘以16等于3,二等于一。

就是三二位置的那个,或者在它后面加上0 b 1和5个0,好啦,另一种方式是你可以来回移动,我希望你能参加我的考试,流利,所有这些所有这三种方式,三箭六箭,三件事,小数,二进制十六进制。

能够从任何人到任何人,这在我的考试中是绝对需要的,好啦,所以练习练习练习,你会得到的。

电脑也知道,我喜欢让我放大,所以你可以在网上看到这个,如果你在房间里看不到这个,因为它太小了,事情就是这样,那是代码的图片,有一张被这个东西取代的车的照片,这里面发生了一些事情。

那是一张毫无价值的幻灯片。

那是值得一滑的,嗯,我们将与您分享,原本应该是,有一张被替换的代码的图片,可能到处都是我的照片,所以谢谢投票,到处都好,这堂课的题目是数字表示权,想法是数字,它的表现形式是什么。

我们今天讨论这个,所以这就是问题所在,你能用数字的表示做什么,你能用这些数字做什么,这就是你能用数字做的一切,你一年级的时候,加减,乘除,但是等等,你是说这些基地,是啊,是啊,他们仍然工作相同。

因为十进制没有什么特别的,十进制没什么特别的,我失声了,我好兴奋,在基地也一样,排名第一的是什么?零一零,记住这个十十是十,那很容易,零一是十,为什么八加二等于十,十是十,什么都是一,一一说四二一。

七个模板,七是十七,如果你算一下,现在是十七岁,一个要带着看一个,这里有一个,这个一个变成两个,我们只能代表一个,那是零,加一等于零,拿着那个,加一等于零,拿着那个,因为它是16和17,会有用的。

它只是在美丽的,你带着,就像十进制一样,但每个插槽只能有一个或零,我的意思是,所以这真的很酷,这里有个问题,你怎么知道,如果一个数字比另一个大,就去,这几乎是个问题,那是一年级的学生,这里有一个。

这里有一个,我要在黑板上写点东西,三五,这里是四二,哪个更大,很难抬头,三比四大,我只看到3和4的符号,哪个更大,你得知道4是多大的,好啦,所以大一点的,所以有一个更大的井,但是三百对四十二怎么样,嗯。

三个现在不是说四个比三个大,但是三百比四十二大,为什么?因为有更多的斑点,那么如何在二进制中做到这一点,你怎么分辨两个二进制数字和数字,哪一个大两个二进制数字,是呀,告诉我告诉我你的名字。

告诉我你的名字,呃哈里,去吧,从左到右,是的,是的,如果左边大一点就对了,后来它变大了,但如果他们是一样的呢,所以呃,去参加我的婚礼而你一直在重复,你实际上递归,你向右递归需要。

所以这就是你在二进制中做的,好啦,在二进制数字中很酷。

只有正数,所以现在流血,我的血呢,好啦,开始了,如果它们太大了怎么办,你说太大是什么意思,嗯,我这里有五块钱,这些表示很好,但它们是固定的,只有一定数量的东西,最后记住两件事,如果我想储存,两个到M。

再加上一个从没坐过旧校车的人,在一辆旧校车里看到了什么,当里程表读到9-9-9-9,你再开一英里,那个数字怎么了,它包裹到零,你认为在二进制中会发生什么,同样的东西不是那么整洁吗,所以用五个比特。

我可以从所有的零或零计数,这是我的,这是我的两个,我最大的数字是多少,五位,我最大的数字是多少,我最大的数字是多少,这其实是正确的,我最大的数字是多少,我可以用二进制数来表示,所以我说的没错,三一。

当我开一辆的时候会发生什么,我认为这是一个主导权,这是数字线是里程表,这是一条数字线,顺便说一句,底部是数字,数字在上面,数字线是下面的人,当我数到三,两个,再走一英里,它包装成所有的零。

这也是计算机中发生的事情,那不是很有趣吗?

好啦,所以数字真的有无限个数字。

但是计算机是有限的,我们就像我们现在,我们在想哇哦,资源有限,我第一次不得不和他们分享,就像,你知道的,你告诉他们圣诞老人的事,他们没事,这是现实世界,伙计们,我们在计算机中有一个固定的数字空间。

我们认为它是完美的不是现在,固定基地会限制我们,这意味着有时我们的计算是不对的,十六加十六,我不能在这里储存,十六加十六,在这张地图上,在这张地图上,零,只有三个,两个包裹在那里,等等,六十六是零。

是呀,这里正好是零,因为我不能储存这三个,二是那么疯狂,所以我们称这两件事为无符号,因为我不是,没有任何迹象,没有正面或负面,这是第一部分,第二部分是当这个包装,我们说发生了溢流,好的,现在溢出来。

为什么箭反了,如果我在一两个,我减去一个,我要倒车穿过金门大桥,我们还有两英里,我不认为这样在车上行得通,但不管怎样,我会在里程表上看到一个,我会看到零,再走一英里,所有9,如果向前走被称为溢出。

你认为那叫什么,你觉得倒退叫什么,我听说我听说底流错了,这不是暗流,它也被称为溢出作为一个诡计问题,也叫溢出。

好啦,我们想做负数,这种积极的事情是疯狂的,我们如何做好负数,到目前为止,我们已经看到了未签名的,没有任何迹象,没有正负之分,没有任何迹象,我们做过无符号的数字,这就是我们以前所做的。

这是显而易见的解决办法,不如我们偷一点,如果我们从左边偷一点,左边是我们的标志位,只是为了让它在,让零表示正,一表示负,所以我们和以前一样,一点点,所以这样做,把零变成正,这意味着前16个数字是一样的。

所有的零到零一一一是从零到十五,和以前一样,一点都不奇怪,嗯,让我告诉你这个小故事,好啦,再来一个,让我们再走一英里,让我们再试一次,会发生什么,我还有15英里,这是它的底部,我先走了,注意这里。

然后是负的,我的意思是,一零零零是负零,因为左边就是,那是我的负号,现在剩下的都是零,所以是负零,等等什么耶,负零度现在让我们再行驶一英里,里程表是多少?读一零一,意思是负1,现在我走错路了。

记得我每多走一英里,我现在每走一英里都很积极,我是消极的,我们不喜欢那样,好啦,所以有些经理有这个缺陷,当你不断增加计数器,你现在变得更消极了,让我给你讲一个关于,天下没有免费的午餐,有一个世界。

有一个我喜欢这个故事,在这个寓言里,有一个城镇有长老,一群男人和女人,都是大头发,他痛苦地俯身,国王,非常强大的国王说,我想学所有关于经济学的知识,走开,走开,长老们和他们一起写,所以他们离开了。

花了一年时间回来,这里有八万七千页,当然国王,我们一整年都在努力工作,我们现在有,这就是经济学的全部,他说没时间读这个,回去让它更容易,所以说,我的天啊,就像回到画板上,长老们回去了,他们回来了。

他们说我们写了这本书,解释了所有的经济学,没有时间,把它弄小一点,因为他们一年后再回来,这部低俗小说不会让你有时间回到那个,这本漫画书将解释所有的经济学,没时间去了。

这份单面的行政文件只解释了所有的经济学,他们没有时间离开,他们回来了,他们说,好啦,我们已经归结为一个简单的想法,即所有的经济学都是,这不是免费的午餐,你不能不劳而获,就是这个意思。

这是一个非常有力的想法,为什么我在一个没有签名的五比特之前就提出来了,我可以从零到三一没有免费的午餐,说如果我偷了一点,我不能再这么大了,这是十六块,我以前可以做一边,我不能再做没有免费的午餐。

意思是我得拿点东西,我不得不付钱得到一些身份,一个非常强大的,在经济学和计算机科学中都有非常强大的想法,所以我偷了些东西,现在我可以从负0到负15,那太好了,两个零。

我的范围在某种程度上比0-3-1-3-2小了一点,我有两个不同的。

我也不喜欢那样,好啦,缺点,我们简单地讨论了一下算术电路,如果我试图建立像活页夹这样的东西,比如电路,实际的矿石和结来做实际的数学,真的很复杂,整个负面的事情让我们很难做到我们可以做到非常丑陋。

真的很丑,我们得到了两个零,我们谈过了,当我看到一个32位的数字,由八个十六进制数字书写的十六进制数字,所有的零都是零,左边那个是八一,零是八,所以如果我要给你看三个两个比特,左边的是一个。

变成了八零零零,那是负零,所以我得到了两个零,我不喜欢那样,我们讨论了二元变化方向的增加,我们也不喜欢那样,所以他们说,我们怎样才能解决这个问题,如果我们流血了怎么办,我得靠近点。

所以它实际上只用于信号处理。

或者其他一些东西循环,如果我们把这些,我们翻转位,使其为负,全部翻过来,全部翻转成负数,我们谈谈吧,让我们看看那里会发生什么,所以这里是七零一一一,好啦,正七,你同意吗,减七等于一零零零,那很有趣。

我只是把所有的部分,“好”是什么意思,记住所有的正数都保持不变,所以零来适应,挺好的,从0到15不变,一切都保持不变,但是现在负数是多少呢?事情就是这样,什么会,让我们看看负零,都是对的。

因为负零把它们都翻转成1,负十五是多少?让我们走里程表,我们的里程表怎么了,开始了,我们快到十五了,什么是一零零零零等等,在这里,我总是很积极,现在看看会发生什么,因为这里的1-0-0。

那个比这个多一个里程表是这个,所以我实际上总是积极的,我很喜欢那样,那太好了,我们不喜欢的问题是什么,可能是一件事,我们不喜欢两个零,如果我们能喜欢,把底部移过来一个,我们会很好的。

所以这个代表负15到正,十五加两个零,如果我们能把这个东西放在左边一点就完美了。

女士们先生们,欢迎来到,那是个缺点,我在这里说了一会儿。

我们实际上不再使用它了,选择补语。

我们要把这个放进去,随着时间的推移,我们开始了,问题是零重叠,我们不希望这种事发生,我们之前说过,好啦,所以这对选择夫妇让这变得很容易,如果你说int,如果在你生命中的任何时候,你说过整型或整数之类的。

但是int,你不是在用,在前面这样选择补语,如果你说未签名,你在做之前的无悔,那是最简单的,如果你说选择补语,如果你说int,你的意思是选择赞美,很酷的循环,让我在这里做,就在这里,回来,回来,所以说。

这是公式,这里有一个思考的方法,记得我说过,把他们往左移那么多,我得花多少钱才能把它们转移到井里,如果你还记得之前的照片,我会把它们移到16个左右,记住那个数字,就像十五乘十六,然后我得到负16到负1。

十六是那个次方的二,减一作为负数,所以这里有一种方法来思考他的补语,最左边那个,倍增,这是最左边的系数,是二进制的负2,减去一个将整个负面完全转移到,所以负1是你能得到的最大的一个,你可以说服自己。

如果你把最左边的负16,就算加一个一个一个,15加16等于-1,所以左边的数字把他们转移到了,所以它们现在不重叠了,它们在图片中并不重叠,很酷吗,还有一件很酷的事,让我们做一些否定,我们开始了。

如果这是一个,零一,那是几号?我不知道,让我们把它倒过来,然后再加一个你必须,然后反转的时候再加一个,所以每当你把这里的东西颠倒过来,两个人的公司,你倒过来加一个,所以和我在一起所以1 1 0 1。

我不知道那个数字是多少,我来还原一下,哦哦哦一个零加一个,都是一那是三,所以一个一个,哦,一一定是负三,我们拿三把它倒过来,哦一个,哦1变成1 1 0,哦,我加一一零一,我又回到了负3。

所以实际上它是倒置的,加一个,反加一等于二的补码,它总是有效的,那不是很酷吗。

整洁的东西,顺便问一下,它对零有效吗,取零,把它们倒过来,所有的加一个,全部归零,还是零,所以负零就是零,它实际上也适用于零,那真的很酷,这是二的补数的数行,从零点开始,到15岁之前,那不是什么新鲜事。

你在这里看到了这个,这和底部是一样的,但是注意,我们把底部向左移动了一个,现在我没有两个零了,它只是完全有效,因为我得到的负数比正数大,最大正数,因为负数是负16,因为我把它移到了16。

所以我还有一个负数,然后我做一个正数,有点需要好了开始吧。

所以这是最后一个编码,我有三分钟的时间来报道这个,现在你是说,如果你有过从零到三五的电信号,你有没有过正弦波,好像不是正弦波,它不是在零附近摆动,就像在这里招手,就像这里是零,它在这里挥舞,好像会很酷。

如果我可以把它滑下来,所以我可以看着它,就像在示波器上,所以我们说的是,我给它加了一个偏见,如果我减去一个常数,它会减去这整条曲线,然后把整条曲线向下滑动,所以现在它在零度左右摆动,这就是它的作用。

它表明你知道整个零,从零到三十一,如果我把它切开,让我们把整个未签名的数字,对呀,整个未签名的家伙都是零,零到所有,记住那个零,所以这是所有1的零,如果我只是把整个东西,只是滑了一些,所以所有的零。

而不是在零,所有的表示都是零就是零,每隔一个零和无符号零,零和1补零,零符号曼零,只是恭维零,但在这里,我把零加到所有的数,以某种偏差把它们往后滑,所以所有的零现在是有意义的最大负数。

所有的1都是最大的正数,只是有偏见,记得丽莎和我说好要用圆周率来数吗,你同意解码这个的人,让我们就偏见达成一致,再给你五块钱,它的偏差是负15,基本上一般,默认情况下,偏见总是一个,这样你就多了一个。

一个比喜欢更积极,几乎比我有点相反,你得了负16分,但这里只有15分,恰恰相反,偏差是负15,所以最大的数字是负15,因为零加偏差是,所以这里是零编码从比特做无符号,然后你加上偏差,这就是你说的数字。

所以所有的零都在地图上,再加上偏差是负15,一直到十六岁,因为3 1减15等于16,所以偏向就是把整个东西向后滑动一些,这就是你要做的很简单,我想我没有时间回答点击器的问题。

但我做得很好涵盖了所有这些东西。

让我过去,点击器点击点击器,你也许该考虑一下,你怎么表示负2,十二点七十五,你怎么能做到一点点。

当阴性时,那很复杂,我想我得点击右键。

投票,好啦,总而言之,我们及时完成了,二到n位是二到末尾,东西,五种不同的整数编码,每种都有不同的好处,全部可测试,现在通过所有的无符号为零,二的补语,我们主要用,对所有的都是零,然后你又回到阴性。

最后又有一个负数和正数,节点两个零,非常感谢,数字表示和不要忘记。

天下没有免费的午餐。

P20:Lecture 15 Combinational Logic - 这样好__ - BV1s7421T7XR

好啦,我们开始吧,我们总是在新闻里做计算,欢迎大家回来,C六C宇,嗯计算新闻,你看到了这个,你看到这张幻灯片了,其中谈到了联合国,浮点,什么是浮点,如果你还记得浮点,指数有固定的位数,螳螂的固定比特数。

你还记得吗,有人说好,你为什么不能改变,这不是很疯狂吗?尾数和指数之间的那条线,能够有非常大的数字或非常小的数字,如果你需要这么做,通过改变这些比特,这就是你的目的,就是这个意思。

这就像又一个间接的层次,在螳螂和指数之间的那条线,什么叫,所以这三个承诺都是一个浮点,什么是浮点,声称说,电源位置是硬件友好的Unhere版本有趣的是,我刚在新闻里看到这个。

所以记住Unum这个词是一个新的想法,它们也被称为假设,稍微调整一下让硬件更友好,我刚刚看到新闻说一个新的数字,等一下等一下,我们教你假设,我们有一张幻灯片是关于假设可以提高人工智能的数学。

那不是很迷人吗?所以这所西班牙大学的科学家们开发了一种处理器核心,所以可以部署定位标准的硬件,比标准浮点改进的数字表示形式,硬件中的算术处理器,他们说的是,它在矩阵乘法精度方面提高了四个数量级。

不损失计算时间,假设可能会加快,人工智能训练,因为你不会在路上丢失太多信息,这里有一条关于什么时候假设更好的小线条,你注意到就在我们中间的山上,紫色的质点比浮点标准好,所以这是一个有趣的,他们更坏。

其他时候对,天下没有免费的午餐,这将是一个浮动比假设更好的情况,积极因素比花车好,如果你呆在碰巧是那个领域的世界里,正或优于浮动,也许假设是一件更好的事情,那是我最酷的事。

我刚了解到这个假设现在得到了一些支持,这是一件有趣的事情,好啦,我其实很喜欢第一节课之后的这节课。

所以我准备了这个,其实在线上,我们把它搬来搬去,所以我有点,我做的就像啊。

就像什么是足球短语,就像一个声音,我做了一个声音,我没告诉任何人就改了,所以那个人去拿副本,我向你道歉,I,他们带错了副本,但是整个星期的拷贝都完成了,所以他们只是去拿一套新的副本。

所以当你拿到新的副本。

我们今天要讲组合逻辑,这就是我所准备的,所以我们要这么做,但我们要把它换成州,我们上次就是这么做的,好吧,我们开始组合逻辑,我觉得第一节课之后会比较流畅,所以我做了一个声音,并改变了它。

所以你们在线的人,把第二套幻灯片拿出来,确保你在那里,班上的人会给你更好的讲义,我请客,因为我做了录音,没有让我的员工知道,所以说,我向他们两桌道歉,这是一个四输入,一个输出框,很简单,组合逻辑。

逻辑比状态元素容易多少,所以我想这么做,这就是为什么我做了听觉,所以这里是F,这就是为什么,这是真值表,你看起来很好,但是丹,你不一定要有一个1或零吗,你知道的,abcd,以下是B、C和D的16个选项。

你看着这个想法,好啦,那就是函数是函数,你可以去薯条店买,一种特殊的功能,它的作用是,这是一个,它真正的桌子是什么样子的,不管是什么,最下面一行是什么,就是那个函数返回的东西,如果你给它所有的。

最上面的一排是什么,函数返回的是什么,你给它所有的零,中间那一排是什么?函数返回的是什么,如果第一个是你知道8的情况f是1,剩下的都是零,那么做什么和看什么,我知道什么不是,看起来只是一般。

它看起来像四个输入,从真值表上看是什么,如果我知道输入前的内容,看起来像,是啊,是啊,去吧,告诉我你的名字,埃里克去所有零除了,只有当a和b和c和d为一时,它们才是,全是零,除了最下面一行是一个。

一个怎么样,或者你能告诉我,告诉我一个或可能是什么样子,顺便说一句,这是你去薯条的盒子之一,你去薯条,那是其中之一,另一个是什么,一个或者是的怎么样,告诉我你的名字,你觉得呢,除了最上面的一排,正确。

那是四个输入,或者上面写着,如果他们中的任何一个,你是一个,只有当他们都是零的时候你才是零,好啦,对于输入来说有点意义,所以现在我问你们,我给你们举了多少这样的设备,两个设备,一个是N,一个是一个。

或者有多少这样的设备存在于薯条和薯条,经理说,你得掩护,我们所能建立的每一个可能的功能,他们有多少人,一个非常有趣的问题,员工提供每一个可能的功能有多难,就在那里,每个f和都是一或二,至少有两个。

怎么样?是呀,你一帆风顺,快跑,从2号到16号,你怎么知道的,完全正确,你怎么知道的,头向左转,让我们做一个表情符号,头向左转,每个人,头向左转,这是一个16位的数字,这不是一个16位的数字吗。

每一个可能的16位数字,是一个可能的函数,那不是很整洁吗,我们看到了一个零的那个,我们看到了一个是一个和一个,或者每一个可能的16位数字,令人着迷的是,包括那个全是零的,那是什么?没关系,你放的东西。

我将是零,那不是很迷人吗?那是个好主意,所以好好想想,头向左转,你看这些f都是16位的数字,每一个可能的组合都是一个可能的函数。

让我们看一些真值表的例子,你以前见过这个,我们把这个叫做XOR,每个人都去了XOR,也称为,倒置,你还记得我们看到,就是这样,这就是为什么没有不是不是伪指令,因为它实际上是用异或来反转,当有一个。

为什么如果我看着一个,让我们,让我们把a定格在0,当a为零时,你在干什么?只要说b不管b是什么b起源b对b当a是1时,什么是y不是b,所以它是一个条件逆变器,你几乎可以让a在某种意义上决定y对b的作用。

这意味着我们现在可以看一个真值表,以一种会让你大吃一惊的方式,这让我大吃一惊,当我看到,这个还是很美,准备好了,这里有一个新的方法来看待,它,那不是很美吗?A是零,Y是B,所以你可以写B和A。

真理表中的b和c,不仅仅是1和0,但实际上这样想更有意义,这告诉你它是一个比这更有条件的vertemore,超过四行,两排的第一排说这显然是一个条件逆变器,它是否反转b,那不是很整洁吗。

这就是为什么我们没有直接的指示,我们将使用伪指令x或为我们做这项工作,这就是为什么它被称为减少风险的指示,让别人做那工作吧。

好的好的,这是一个两位加法器,这就是为什么我想用这个讲座,我们刚刚谈到了加法器,这是最后一堂课,我们谈到了加法器,这里有一个二位加法器,我说我记得我站在那里说,如果我们有n个比特进来。

你应该有超过n位出来,为什么?因为当你加上两样东西,如果他们都是,你会有超过n个比特出来,所以如果我在左边有两个比特,右边两位,我应该有两个以上的,因为什么,如果这个携带,你得解释这一点。

所以这就是再次制造加法器的逻辑。

这是我的声音,我真的很喜欢思考这个。

因为它确实来自于我们上次的谈话,让我们来看看,所以选一个拾取器,从ab中选择一个值是a是2,就像我几乎在排的底部,你看不到变焦,我只是在这里展示这个,所以a等于3 b等于0,三加零等于三,三加一怎么样。

啊,那是四个,看到这一切只是工作,如果你仔细检查每一行,每一行都有意义,也就是说,你只需要三个比特就可以得到两个比特加两个比特,三块而已,n位加m位等于n加1位,因为这是最糟糕的情况,最坏的情况。

最坏的情况是什么,所有的人和所有的人,当你把任何东西成比特翻倍时会发生什么,你只要向左移动一点,都是带a的,右边有个零,看最下面一行,女士们先生们,都是右边有零的,所以你只需要n加1位来输入n位,夏天。

这是一个n位加法器,这是一个两位加法器,三位输出任何问题,是的,问题告诉我,我走了,你必须用真相来代表版本吗,哦,我喜欢,我喜欢,问题是你必须用真值表来解决这个问题吗,或者有什么更聪明的方法。

也许我可以用一个小加法器做一个加法器,通过巧妙地布线,我们可以做到这一点,所以呆在那里,下节课的问题,我们可能没有选择桌,我们其实可以建一个,阿多尔,去薯条女人。

然后用正确的方式把它们连接起来有很多位加法器,做两个位出来,如果我喜欢这个主意,说吧,把那个好问题留在干得好上,好吧,一般情况下,在实际计算它们之前有多少行,这是多少行,多少行,总的来说,多少行。

因为如果我有,你做什么,你怎么知道,你怎么,无论我要求什么,多少行,你做什么,你说的第一句话是什么,每样东西都有一排,每个人都有一排,对呀,你有多少个输入,我数了四个输入,所有在前两名的人都是A,2。

B,那是四个,二乘四等于十六,让我们看看那里的十六行,做四行,我们看到了同样的事情,所以输入的数量,二到二是行数,你会有所有的权利。

所以现在我要说,这里有一个,这是三十块钱,两个来吧宝贝,咬了她两口,太感谢你了,太感谢你了,顺便说一下,是我的错,不是你的错,我的错,我只想说一点助教的事,非常感谢你的帮助,所以我们有新的讲义。

我做的听力完全在我身上,我切换到周围的讲座,但没告诉任何人,你说过,但是丹,我们说的是五险系统,我们要加上32个比特数,对呀,一直以来,大约是32位的数字,不是关于这些小数字,是关于,你有问题要问我吗。

或者你只是想出去,是呀,所以32位数字,所以这是我的,让我们从这里开始,这有点像是,我们刚刚,这就是我们要做好这件事的方法,让我们来看看,以下是所有可能的三个二位值,从十六进制零到八进制,十六进制f。

32位0到3位2位1,B也一样好吧,准备好了,开始了,多少行,2到64好的,我们开始吧,好啦,大家开始,你先拿四分之一怎么样,然后你拿的这个区域,开什么玩笑,我们不打算建造这个,我们不会去想这个。

太多了,我们会更聪明,如何构建关于其他部分的加法器。

好啦,我们会讲到这一点的,但那真的很酷,让我们来谈谈,让我们来谈谈只是有一些乐趣,看常规逻辑,逻辑是,我觉得最简单的,对我来说最直观的东西,对你来说很难,没关系的,但我发现这对我来说真的很直观。

这就是所谓的多数回路,三个输入,多数电路,让我们来看看这个,这是干什么,它基本上是在说,我有这些零件,输出奇数,奇数位,所以总得有人赢,没有领带,这是否有意义有一个四输入多数电路,没有那么多。

你可能有一点,上面写着他们打成平手了吗,也许你会有一个像谁赢了一样的输出,如果领带系得很高,如果不是泰国菜,谁赢了,你可能有那个,你可以想一个偶数,但现在应该很简单,我们有偶数个输入。

多数就是多数的选票是对的,谁将赢得两位候选人,零是那些看那看每一行,每一行都是大多数,三个一,是一二一,是一二一,是一二一,就是那个,所有是两个零的,是零或三个零,是零,是啊,是啊,那很干净。

所以你有一个多数巡回法院,只是一些有趣的东西,所以更多精彩的真值表的例子。

逻辑门,是呀,问题,告诉我,是呀,亚当亚当对,是啊,是啊,是啊,是啊,走呀,走呀,你为什么需要,我们会想出办法的,就像一个小秘密,它就像未来有用的电路,我是说你会明白为什么这有点放得开的。

让我们做逻辑门,你已经看过了,这就是为什么我认为这堂课比另一堂课容易一点,比一个状态电路,尽管最后一个我以注册文件结束,我想回到组合逻辑学,好啦,你已经看到了它的形状,那是方框图,一个电器是。

如果我想说会有一个合乎逻辑的,在这里我们看到了如何建造它,我们实际上看到了如何建造它,随着电流的流动,我们看到你现在已经可以建造了,因为你知道我给你看的。

我向你展示了如何把一些东西连接在一起制造其他东西,所以我们开始了,这是我的,这是我的,或者是逻辑门,那是形状,那是一个结,这是你第一次看到这个看这个。

它就像一个三角形,看起来像一个缓冲器,如果你有一个三角形,这叫缓冲器,但最后有个小圆圈。

这就是Notts的符号,它是一个末端有一个圆的小三角形,指示b将与a相反。

所以现在你可以再说一遍,我要放大,我想出了这个,我从没在别的地方见过,所以我提出索赔。

你怎么记得,那是这两种形状中的哪一种,对于这两个形状。

一条直线,也就是曲线,如果你总是忘记,你知道我是怎么想的,D D看起来像形状,所以我编造了这个,我花了一个小时把字体弄得恰到好处,所以很符合图片,那真的很有趣,那是对我时间的很好利用,字体恰到好处。

又大又老,有你的和,别忘了哪一个是。

和和或我永远不记得,你就是这么记得的,希望能有所帮助,这里有一些更有趣的逻辑门,这是你知道的X,或者我们只是说说而已,这就是它的形状,哦哦,它是一个或像一个,就像第二行,你看第二行,这是钥匙。

不要划清界限,穿过这条线的a线和b线,让他们停在第一线,所以有一个小曲线,这就像一个坡道什么的有曲线,不要画那些贯穿内心的a线和b线,或者让他们停在左边。

如果你已经看到这是一个小圆圈。

意思是一个结,你要说,啊,圆表示没有圆表示相反,这不是,所以现在,你会怎么画一个,它是一个和一个圆,你会怎么画一个,也不是圆圈,让我们看看牙表,从字面上看,它就像一个镜像的对立面,而不是零零一。

是1 1 0,只是它的翻转,常量不是零一一一,是一个零零零,关于XOR有什么问题吗,如何画它们。

好的,所以这里有一个有趣的问题,我可以把两个输入门扩展到n个输入吗,我给你看的第一件事是,你知道的,四个输入,这可能意味着什么,或用于输入,或者我们谈过这个,所以那些正在进行的记录是有意义的。

而且只有当它们都是真的时,才是真的,或者只有当他们都抱歉的时候才是真的,如果他们中的任何一个只要是真的,如果其中任何一个是真的,那是一个或一个n的输入,或者现在的XOR以前的XOR是什么。

下面是XOR的定义,不给糖就捣蛋,但不是两者都有,这是规矩,现在你可能会问自己,这条规则是如何扩展到n个没有多大意义的输入的,彼此正确,但不是两者都正确,但现在你有三个,现在你有七个。

其中一个或另一个是什么意思。

但不是两者都延伸,让我们回到XOR,这是XOR的图片,这是XOR的图片,就在那里,看最上面的一排,这是我的XOR,如果我把XOR从其中一个改变为另一个,但不是两者都是真的,但它能如此容易地扩展到输入吗。

如果我把它换成奇数个呢,这仍然是一致的吗,让我们来看看,让我们看看,好啦,两个零,没有人,零是偶数,但人们没有零,是偶数和偶数,任何除以2的东西,它没有余数,所以零,负二和偶数或奇数的人喜欢,不知道。

是啊,是啊,他们得到2是因为你除以2,你没有任何衍射点,剩余物,那只是我对数学教育的失望,好啦,最上面一行有多少个,零零,零是一个奇数,不,不奇怪,所以是零,你的问题是,1的数目是奇数吗,下两排呢。

一号是奇数,是啊,一个奇怪的,下面呢,一号是奇数,没有两个,所以这实际上是一致的,现在是一致的,现在当我输入n个。

我不需要告诉你什么不同,看看那个XOR,让我们看每一行,确保我们理解得很好,前四个和原来的零一个零一样,下一个只是记住,这就是很酷的地方,就像你有条件地倒置,前四名,看0 1 1 0。

但最后一个是相反的1 0 0 1,所以这几乎就像你级联和有条件的倒置,底层,就像有一个XOR的XOR,基本上我用两个两个输入x构建了这个,我要么把整个东西倒转到底部,要么不倒转,让我们数一数。

也许这让人困惑,让我们数一数,所以上面的是同一个,只有一个,那是一个,这里有两个,那是零,我现在和,对于那些看不到我的绿色点击器的人,我想你可以你可以在变焦上看到这个,如果我喜欢这个。

你能看到那个绿色的东西吗,但你看不到绿色,是啊,是啊,现在真是烦死了,我在这一排,这是两个偶数,三一就是一,所以这是有意义的任何关于,所以现在,顺便说一下,十个输入怎么样,Xor,你能做吗,是啊,是啊。

你可以写,如果你想写一千零二十四行,你能做到的。

等等丹,你们一直是食客,玩具,你一直在用真理表戏弄我,还有这个带有块的示意图,让我们把它放在一起,这里有一张真值表,向那些大门移动,那些门实际上会实现真值表,我们一起读吧,什么时候。

这是你能看到的大多数,这个什么时候能产出一口井呢?

这是单行道,我们一起读吧,当这个顶楼在说什么,我们一起读吧。

这个上面的块写着一个,我用光标,因为再一次,学会人们看不到它,所以这个上衣,这个上面的块写着一个,哦,那是一个和一个,或者哦,我不知道,丹有没有给我一个助记符,因为它有权利,所以这是一个和什么。

让我们沿着B线走,现在呢,这里有一个关键的事情之前,我还没告诉你怎么看这些星门图。

每当一条线交叉而没有圆圈的时候。

这不是十字架,就像我有一条高速公路,我不得不沉下去,这是一个地下通道的情况,它实际上并不互相接触,有道理。

当它有一个圆的时候,就像这里,有联系。

所以只有圆圈,里面的小胖子,在图中告诉你有一个联系。

所以我所看到的,我在读这个,我在想,好啦。

这是……这条线是什么?跟着它回去,跟着它回去,是呀,这里的一个连接。

那里没有连接b,所以这是a和b,现在让我们在真相表上看看这个,A和B是什么时候,看A和B只是这两个,所以这对这两个来说很重要,那两个在这里,这很适合一个,或者说就像,记住还是真的,如果他们中的任何一个。

所以更像是吸收,所有喜欢的,啊,任何时候你是你的人,我得到了A和B,涵盖了这两个案子,第二个怎么样,这是b和c,同样的论点,让我们做b和c,就是这里,那是那个,那也是这个,所以实际上,这是被数了两次。

但记住,两个中的一个仍然是一个,所以没关系,他们中的一个是不是,你要在最后给它一个1,看看输出,最后一个显然是A和C,那是A和C,哪个是这个,还有这个,所以最下面的一行被数了三次,不过没关系。

它是其中的一个,所以看看这个,这是你第一次看到一种看待,我还没有告诉你算法的种类,但我让你知道,你同意我的看法,让我们说一个班级点头或给我一个头部移动的动作,这套门,是这个做这个图。

这个星门图描述了这个真值表感觉很对,感觉很好很整洁。

挺有意思的,这就是今天的课所要思考的,如何实际制作真值表的门图,现在我们可能有一个类似于另一个真值表的东西,在这里,PS可能代表前面的,所以这部分不是演讲的完美顺序,因为你还没有听说过国家。

但是假设有一个由ps编码的先前状态,对了这个,左边的这条大垂直线将输入和输出分开,右边的输入,产出,你得到一个输入,所以你可能有一个以前的状态以比特的方式编码,我可以用比特编码任何东西,我说的对吗。

我可以编码情感,颜色,信件,包括各州,我是什么状态在快乐悲伤等等,所以这些状态是用比特编码的,我有两个比特编码,实际上只有三个状态,零一和二,我没有四个州,所以我从来没有,我其实应该有八排,但我没有。

我只有三种可能的状态,由零编码的状态零状态一零一状态二一零,我没有状态三,我只有三样东西,我在乎快乐悲伤饥饿,快乐悲伤饥饿,我在四处走动,以下是我的意见,取决于我的投入,我可能会跳到一个新的状态,哦。

那很酷,这样我就可以跳到一个状态,基于此,再一次,这就是另一节课,但我想保持逻辑,就目前而言,我们不谈论它的宇宙学部分,我不想告诉你为什么你需要这个,这只是一个牙桌,为我做任何事,P是以前的状态。

S是下一个州,一个是输出,所以在这里,看看这个,这是一扇门,这是一个门,理论上抓住了这两个表,让我们看看这对不对,这只是一个,一个的输出是什么时候,一个的输出是什么时候,只有最下面一行。

最下面一行是什么,我们一起读吧,当输入为1时就是,所以输入直接进入那里,当p为1零时,就是这样的模式,1。你怎么说来着?这真的是如果我看,让我们考虑一下,如果我把ps的下位反转,所以在这张图中。

我把ps的较低位反转,那变成了一个一个,如果一个一个,如果我把这个传给,结局只会变成现实,当我得到一个一个,如果我有一个三输入,只是忘记了,忘了真值表吧,如果我有一个三输入n,三个什么时候放进去。

但我的模式并不全是,我的模式是一零一,所以我想把它转换成一个,我的3个输入n只会很高,我知道只有一个得到三个一,但在我的愿望中,其中一个必须为零,那么我该怎么做呢,如果我想触发,为什么我是我的。

并触发它,我说触发错误的方式去高,断言,在函数中返回一个,当那是零,在某种程度上,我必须用逆变器翻转所有的零,如果我这么做了,然后这个看起来像和门,一0一看着大门,就像一个一个,如果零出现。

那个逆变器现在把零变成了一,到尽头的门,它看到了一个一个,你看到那个图案了吗,所以现在我的N门走了,哦三个一,我是一个,只会返回最下面的一排,一个的输出,当输入模式为一对一时,去和门,但对于信号。

是一零一,这就是为什么我必须在ps 0前面放一个逆变器。

有意义的低位,如果我那么做了,三点才会触发。

零一秒,但我没有三个,为什么?因为极移没有第三种状态,记住p只是状态0 0状态1 0 1状态2 1 0,它没有状态三,所以我不能只用毯子,我不能嘿薯条,我需要一个三,然后把,也不管用。

我必须翻转我想翻转的部分,是零,这样我就能在输出上得到那个,我不确定,如果我解释得好,珍娜更新状态,这是个好问题,第二天去那里,那是另一节课,下一个状态存储在某个地方,所有这一切,这就是状态。

这就是那个登记簿的意义所在,Register将唤醒并加载新状态,并这样做,事情就是这样,我拿着这个小逆变器,我实际上拿着这个,什么很酷,我去掉三角形,我拿着圆圈,把圆圈一直推到右边。

所以我得到了输入上的逆变器,当你看到逆变器时,它们是完全一样的,好像要画很多线,只要按一下这个圆圈,移除缓冲器,三角形去掉它,取下圆圈,把它一直推到上面,触到了尽头,现在看起来是这样。

所以n将它的中间输入反转,好的,对此有什么问题吗,这是一种整洁,我没告诉你动机,关于我们为什么关心国家,那是另一节课,但我想关心简单的事情,它是一种组合逻辑,就目前而言,我们只是在做那个。

好啦,这真的很好玩,在这里我们可以做一些历史。

我们谈了一点这段历史,上次乔治公牛队就在两天前,我们谈了四十八个小时,十九世纪的数学家乔治布尔,和其他的一起,它比任何人都早出现,对吧,的父亲,信息论之父,把公牛和人们正在做的事情联系起来。

所以布尔发展了一种叫做布尔代数的东西,原函数和或不在它连接到电路之前,那是,这个想法,气球代数的幂,电路之间有一一对应,由与或与不组成,以及布尔代数数学中的方程,例如,我们顺便绕一圈,在你的笔记里。

如果你可以或将要和Plus在一起,用乘法和上面的条来表示,或者像感叹号。

您可能在编程语言中见过感叹号,如果你一定要写,没有,这是我们以前见过的电路,我们知道这一点,在我们看到大多数人这样做之前,我们的等式是什么样子的,让我们写吧,我们一起写吧,Y=,B那是最上面的一个。

或者A和C或者B和C有那么整齐吗,所以这就是联系,哇塞,那真的很整洁,那是一种联系,事实上,我可以删除它删除点,如你所知,乘法,现在假设它是一个B,现在呢,这假设我的所有输入都有一个字母,如果我有输入。

这是AB输入,我有麻烦了,还记得你看到了以前状态井的PS吗,那是两个字母,意味着一个输入,这就是为什么它令人困惑,所以这里我们假设没有AB本身,没有b c,没有b c,我们都只是一个字母,让它更容易。

但这不是很漂亮吗,a b加ac加bc,你可能在想,你可能会看到前面的几张幻灯片,思考等待,我们也许可以在这方面做代数,而且是的,你可以。

那是整颗子弹,但是布尔代数是如此简洁,那是什么意思呢?所以看到这个真的很酷,好吧,我们开始了,这是我们的前,我们的有限状态机,我告诉过你那是什么,我保留了一些状态,我有一些建议,这是我的,这是我的框图。

我给你看了这个,让我们画一下,这就是当你有两个字母的变量时所做的,更令人困惑的是,但你希望能够,不知何故,你知道你不能过程序员的生活,你不能,你的生活只有一个字母变量。

你必须能够对它们有一些语义上的意义,所以我真的很喜欢p和n,而不是像pn和a,当我们有多个字母变量时,我们是这样做的,这并不意味着正确的术语,并不意味着,我乘以n乘以p对,它不是,是输入这个词。

所以p次1表示高阶位,或者下一个最低阶的位,s下零表示ps信号的最低位,请参阅该专栏的条款,这是看看输出是什么,它是p子1,而不是ps0,输入任何关于它的问题,只是给你看看我们之前做的。

但是你把它写成代数方程真的很漂亮,现在给你的朋友发短信更容易了,嘿嘿,零点是多少?你在给你的朋友发短信,所有这些事情,现在很难发短信给这个。

更容易测试代数,疯狂的是,疯狂的是,然后我就可以形成一个形状,拍一张盖茨图,把它转换成等价于,接下来是有趣的部分,双手沾满按摩油,布尔代数按摩油和你的工作,你喜欢锻炼肌肉,但我得去按摩,他们锻炼肌肉。

你一定要啊,我的肩膀和他们工作的人蘸它,他们在肩膀上工作,以消除扭结,真的很不错,哦,我能感觉到,是呀,继续工作,很棒对吧,这就是我们在这里做的,把你的手浸在布尔代数按摩油里,你计算这个方程。

你努力简化它,重点是把结拿出来简化一下。

每一个阶段都像一个证明,你可能会做几何学。

记住这就像侧角边,侧角侧,你可以侧角,所有这些事情,好啦,按摩的每一行,你可以给你的所作所为贴上标签,让我们一起做吧,AB加上我甚至会放大,这样你就能看得更清楚,这很酷吗,我就是喜欢这部分。

好在这里,我们走原路a b加a加c,让我们看看这是不是像一个真正的代数方程,我可以把A拿出来,我可以拔出来吗,它会得到b加1加c,然后b加1我们会知道b加1实际上是1,我将在下一张幻灯片中给你们看。

所以b加1变成1乘以1这又回到了正规代数,乘以1是a,就像你以前见过的那样,不是这样有一些,有些规则很奇怪,就像p加1是一个奇怪的规则,所以无论在哪里,我都要指出这是一个奇怪的规则,对你来说不合逻辑。

但其他的,其他都是正规代数,你现在跟一个九年级的学生学,我们现在是代数的孩子,把A拉出来,我把A反向分配出去,B加1是现在剩下的,B加1是一个这是最奇怪的一个,你以前没见过,那是新的,然后是一个时代。

就像身份一样,你知道一个时间是一个,所以这并不奇怪,除了那个奇怪的,b加1是b是1,这是唯一一个奇怪的,那不是很整洁吗,不过,这不是很好吗,斯坦。

你能给我们一份这些等价物的清单吗,因为不然的话我就瞎了。

这是我做这件事之前的关键,代数很棒,很高兴看到,如果我造了这个很酷的电路,它相当于这个电路,嗯,我怎么知道它是等价的,真的是,你知道的,你有更多的结,它们没有任何结,他们在这里有很多结。

怎么一样两个都拿去,使代数运算到最简单的形式,到这边来,但这不是最简单的形式,但最简单的形式是一样的,那他们是一样的,那不是很整洁吗,所以他们看起来很不一样,但你把它们分解成完全相同的。

你显然也可以做真值表和比较,但是很明显,可能会有很多台词,取决于您有多少输入,所以实际上让,也许Mathematica也能帮上忙,或者能自动做到这一点的人,象征性地,最简单的形式。

最简单的形式是一样的吗,是啊,是啊,那种美丽的现在很好,你会希望如果这个答案是一个加c,而这个是c加a,他们会知道那些是最简单的形式,但还是对等的。

你希望,你会希望那东西足够聪明,能够做到这一点,所以我们开始了,布尔代数定律。

把这个圈起来,让我们把注意力集中在他们身上,我喜欢这部分,好啦,开始了,每一条法律,这就是它的美妙之处,这么多,这四堂课,这四堂课太多了,以至于我提出了二元性的想法,你见过美丽的阴阳阴阳形状,男性。

女性和青年,同样的事情,这个世界上有很多东西都有决斗,就像一面镜子,男性和女性,黑白,零,一,假,真,一,或者喜欢,他们中的许多人都是这样的,所以你在这里看到了这种美丽的二元性。

所以我不能只告诉你一个规则,不给你看这对规则,你会注意到在左边和右边,我要么改一加二,有时一个n变成一个,或者我把一个1变成一个零,你们会看到这里有很多方程式,我们必须在两个代数的所有定律中都有对偶性。

好啦,哪一个有意义,让我们通过,让我们突出,我甚至会放大,并突出那些从旧学校代数中有意义的,哪些是新的,你最好记住,好吧,我们开始吧,你可能没见过,因为你不知道普通代数中的结,互补法则说。

当你把自己和你的对立面比较时,X和不是X比较,当你把它们相乘时会发生什么,你们能同时快乐和不快乐吗,否,你不可能既是零又是一,同时你只需要成为其中之一,所以x而不是x是不可能的。

你不可能在零点既是x又不是x,你看到x而不是x零,那是新的,X与否X,你高兴还是不高兴,是呀,你总是快乐或不快乐,其中一个,如果你高兴或不高兴,只有一个状态或一个可能的灯开关,只有一个可能的电灯开关。

很明显那盏灯是这两个案子中的一个,是这两个案子中的一个,是呀,它是一个x或不是x,总是一个,那是第一排,你以前见过的这个没什么特别的,X乘以零零x和零零,那是在你看到x乘以0等于0之前。

那不是什么新鲜事,就像这个一样,x加0等于x,但看看这个,这是一个有点奇怪的,你以前没见过这个,x加1等于1,我在之前的,X或一个,嗯,你是真的还是假的,或者记得真实,真的只是假的,当他们都是假的。

记住,或者我说,或者只是假的,当他们都是假的,所以如果我告诉你嘿,你在矿台的下两排,因为他们中的一个是一个,我不在乎什么,另一个是,你知道的,你的输出是一个,我试着用逻辑来解释,所以异或一。

这意味着你第一次可以写,我今天学到了,臂代数,是这样的,一个还是一个,牙桌最下面一排是真的,很酷好吧,那是x加1是1 x和这里的1,但是这个这个你以前见过。

一个x和一个是x,这基本上说明了最上面的一排。

真理表是怎么说的,上面写着安德鲁斯桌子的最底层,它基本上说输出只是x。

老实说,所有这些都是在看这两张桌子,有趣的是。

你看这个,这是一个非常强大的,我想在这件事上花点时间,谁听过这句话,我先放给你听,有效项目,有效项目,所以计算机科学中并没有真正教授强效项目强效,我来告诉你什么是强效,计算机科学中的强项。

在我们开始之前,现在就看着我,项有效是当您应用一个函数时,一旦你得到一些输出,有些副作用发生了,可能会有副作用,想想副作用功能,你涂一次,如果你涂两次,你得到同样的东西吗,如果你涂N次。

你得到了同样的东西,有些事情你会明白,例如正弦x到三,这有一个副作用,它将名称为x的变量绑定为3,如果我那样做,那是一个函数调用,函数调用,进行函数调用,叫foo和in foo,上面写着。

将一些全局变量x赋值为3,如果我调用那个函数一次,或者叫一百万次,有什么区别吗没有,它只是不断地将x重新分配给全局x 3,什么都没变,这意味着项目的效力,这意味着它有项目效力,那个函数调用是幂等的。

意思是你可以一遍又一遍地做同样的事情,什么都没变,叫一次就像叫一百万次一样,所以这里说的是x,如果i和x,我可以一直加x很多,很多次,它不会改变x,就是这个意思,这里有个X。

如果我用x结束它并没有改变x,X在我结束它之前就在那里了X没有改变,它和x在一起一千次,什么都没变,这才是重点,X仍然会被保留为X无聊,我有x i或者x仍然是x,我可以再点一千次,仍然X。

这就是项目效力的想法,做某事很多很多次,做了也改变不了什么,一次,如果我递增,如果我的函数调用fu是,在丹的银行账户里加一美元,那个东西有效吗,现在我叫它一旦它有一美元,我叫它一百万次。

它增加了一百万美元,那不一样,不是有效的项目,一个标志,全局变量,有效项目,将屏幕改为白色,清屏就是那个阳痿,是呀,我清除屏幕一百万次,还是没问题的,向右移动一个精灵,那个东西有效吗,否。

因为每次你做的时候它都会不停地移动,你明白了,这就是项目效力的想法,所以项目有效,在这种情况下意味着做同样的事情,久而久之一遍又一遍,它和做一次有什么不同吗不,那是物品罐交换,你以前在代数上见过。

没什么奇怪的,结合性,你看得有点对,你可以改变,括号都是,乘法和加法在结合律下闭合,所以那很好,分配i取x,i分配给y,z和i得到x,Y或X,Z,这真的不是它的平行,这到底是什么。

我是这么想的,这真的是看右边,这里是xx,记住箔法XX,加一加x z,加y x加y z。

然后如果我接受这四个术语,再做一些按摩。

什么是x和x,那只是X,x是什么?我的另一个在哪里?什么是x或其他什么。

什么是x或x和y。

所以我们用这个,称为联合定理,但你可以自己想办法,什么是x或x和y,但如果我把X拉出来,它变成x或y,再加上一个Y,加一就是一,x乘1是x,因此等于x,所以这个统一定理说如果你有x和你。

或者有x和其他任何东西,它不会改变它仍然是x,所以记住这是x,记住这里,这个术语是x和x乘以x,也就是X,你从这里看到的,其他的项是x加y x,你知道那还是X,从联合定理,x加xz,你知道那还是x。

联合定理,所以所有这些项都是x加y z,所以我认为这不是一个新规则,这只是规则,所有其他规则一起使用。

事实上,合并定理就是,合并定理就是,我刚才说你,你知道的,把X拉出来,变成y加1 y加1是1 x乘以1是x,因此只有x,所以再一次,这些就像这四个,你只知道,这四个是这个,其他的你都能解决这三个。

你不用背,因为你可以把它们从其他的中计算出来。

这是如此强大,虽然下面这个很重要,德摩根定律,上面写着,如果你有一个,然后呢,你把它颠倒过来,真的很漂亮,这就是左边的,那是一个与非门,右边是什么,诺盖特,它们相当于什么,最酷的是,我是这么想的。

我要给你看我想到的这个秘密,我给你看看这个,如果我能准备好,留下来,在这里陪着我,我有什么,如果你能把我放大,这将是伟大的,我有,啊,谢谢是的,太感谢你了,丽莎太棒了,我有,我还剩下什么,我有。

Y和我否定了整件事,那是一个与非门。

以下是我对德摩根定律的记忆,这是给你的秘密,没有人教这个。

我要分发,你以前见过这个吗,我将在每个学期分配否定,我得到了,x上的否定是什么,不是x,y的变化是什么?不是为什么,乘法上的否定是什么,引用未引用,不是真的,但我做了什么,另外,我只是把它翻到上面。

我把三个都翻过来,这对摩尔定律来说不是很酷吗,三个都翻过来,你翻转x,把乘以的加号翻过来把y翻过来,不是Y,他们是相当美丽的,你有点引用不引用,把否定分配给这三件事,包括手术,有点酷。

它对两者都有效,你看,对双方都有效,让我们放大,让我们放大这个。

如果这是一个加分项,这是一个加分,那么这是一个双向的时代,那漂亮吗。

好啦,莫尔根定律,这就是如何记住它,对摩根来说太酷了。

好啦,所以我们现在来玩一下,让我们现在实际上玩,a b加a加c,让我们慢慢地走,让我们从前面的滑梯往后拉,什么步骤好,我可以分配或逆转,分发一个出来,现在就把它拉出来,到目前为止是b加1,那还不错。

其实呢,我可能要写在这里,一个乘以一真的是一个,因为那是不,否则我不能白手起家,这真的必须是a b加a 1加c,所以这就是身份,这是反向同一性,就像我把一个正常地加回来一样,我把那个拿出来。

我现在把那个加回来,我现在把那个加回来,我现在可以把A拔出来了,是b加1,记住整个1加1是1,b加1是1,记住整件事,任何加一的东西都是一,所以b加1,很多人称之为一的定律,八乘一。

我得到身份从第三步到第四步,我得了加C,所以这个复杂的东西有多少扇门,我得到了一个和和一个三输入,或者那是两扇门,一扇门,为什么我关心做这个简化,嗯,你说过我可以,如果两个不同的方程是相同的。

但看看这个的美,我可以减少,我用的是,减少了能量的数量,我需要我的染料的大小,做那些事。

一切都很好,你想要最简单的形式,你想去找他们,好啦,有一种东西叫做任何真值表的规范形式,在我得到一个点击问题之前,我想确保我涵盖了这个问题,规范形式是,我们慢慢切换,准备好输出中的每一个。

我写了一个方程,所以其中一个输出不是A,不是B,也不是C,从之前的那个,还记得在我们反转ps0之前,每当我需要倒置的时候,只是说不要在它面前,所以最后这个底部,最下面的一行是A和B而不是C。

这是唯一得到的,那是唯一一个给我这个的,然后我说好,如果我覆盖了每一排,那是一个,我只是或者他们都,输出不是a,不是b,也不是c,或者第一个是不是A不是B和C,第二排,等,规范形式,所以你从牙桌开始。

转到规范形式,然后一只手蘸按摩油,一只手蘸按摩油,把方程算出来。

简化一下很酷,所以在这里这样做,让我们把它做好,你把它拔出来,你看,你把结A拉出来,而不是B拉出来,你得到c或不得到c或不得到c,那是一个,同样的事情在这里与一个非c,你拉B还是不拉B。

这是一个身份给你的不是A不是B或A不是C,比多少扇门简单多了,我在上面,疯狂的表情,多简单啊真的很好,这就是它实际上如何使这个,看A在N的输入上有两个结C在C的输入上有一个结,A代表A而不是C。

然后y是非常漂亮的输出,如果我真的算上盖茨,我要把这个算作六个,两端,一三节。

问题来了,这有点长,我不打算结束这一切,哦哦,那太糟糕了,我得到了我得到了所有的乐趣与董事会,然后它让我慢下来,是啊,是啊,如此接近好吧,也许下次我会给你答案,我们来投票吧,下次我会给你答案。

为什么是a或b而不是a或b等于b,那就更难了,你可能需要整整一分钟,所以好好想想,第二个是,输入门实际上可以级联到输入门,我只是把它们像那样叠起来,级联2形成一个带圆括号的三级级联,所以像这样。

就像函数b函数c函数d函数e等于函数,它是一个双输入b函数c函数d函数e,它被称为所有的级联效应,和或XOR和NAND,最后,你能用Norwith巧妙的布线来模拟,和或不,上面的那个还需要一分钟。

我把它放下,但我不会,我不会给你答案,因为这是一个三张幻灯片的答案,我下次会讲到的,我很抱歉花了额外的时间,我想我花了额外的时间,实际上,计算新闻,花了三分钟,开始,三分钟到了,我本可以早点再开始的。

我的球棒又在滑梯上了。

很抱歉幻灯片,只在我身上逆转。