20145338《信息安全系统设计基础》第6周学习总结 20145338 《信息安全系统设计基础》第6周学习总结
第一周复习及实践
ls命令
ls命令,ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略。
Luinx中的 man命令
man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
cheat命令
在linux上,man命令几乎是万能的,但它却不是最高效的。由于它给出的帮助信息很长,在短时间内不好理解,所以在这种情况下,用cheat命令更方便,cheat命令简单来说,就是告诉你一个命令如何使用。
whereis命令
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。
命令格式:whereis [-bmsu] [BMS 目录名 -f ] 文件名
which命令
which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
命令格式:which 可执行文件名称
使用who am i指令查看用户,使用sudo adduser指令新建用户,使用su -l指令切换登录用户,Ctrl+D退出当前用户
感悟:之前一直在逃避去做实践 总是嫌麻烦或者说对他有一种恐惧 不愿意去做。但这次跟着做下来好像没有那么难。
第六周教材学习内容总结
Y86指令集体系结构
Y86指令集体系结构:定义一个指令集体系结构,包括定义各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理。
Y86程序中的每条指令都会读取或修改处理器状态的某些部分。这称为程序员可见状态。这里的“程序员”既可以是用汇编代码写程序的人,也可以是产生机器级代码的编译器。
Y86具体包括:8个程序寄存器、3个条件码ZFSFOF、程序计数器(PC)。
Y86用虚拟地址引用存储器位置。 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态。
Y86 指令
指令编码
指令的字节级编码规则:每条指令第一个字节表明指令的类型,字节高四位是代码,低四位是功能,功能值只有在一组相关指令共用一个代码是才有用
8个程序寄存器当中,每个都有相应的0~7的寄存器标识符。程序寄存器存在CPU中的一个寄存器文件中,这个文件就是一个小的、以寄存器ID作为地址的随机访问存储器。
数字 寄存器名字
0 %eax
1 %ecx
2 %edx
3 %ebx
4 %esp
5 %ebp
6 %esi
7 %edi
Y86 异常
值 名字 含义
1 AOK 正常操作
2 HLT 处理器执行halt指令(指令停止)
3 ADR 遇到非法地址
4 INS 遇到非法指令
Y86程序
Y86代码与IA32代码的主要区在于Y86可能需要多条指令来执行一条IA32指令所完成的功能。Y86没有伸缩寻址模式。
这个程序中,以“.”开头的词是汇编器命令
逻辑设计和硬件控制语言HCL
逻辑门
逻辑门产生的输出,等于它们输入位值的某个布尔函数。逻辑门只对单个位的数进行操作,而不是整个字。
逻辑门总是活动的,一旦一个门的输入变化,在短时间内,输出就会跟着变化。
组合电路和HCL布尔表达式
组合电路:讲很多的逻辑门组成一个网,就能构成计算块。
构建这些网有两条限制:
1.两个或多个逻辑门的输出不能连接在一起,否则他们可能会使线上的信号矛盾,可能会导致一个不合法的电压或电器故障。
2.这个网必须是无环的。
字级的组合电路和HCL整数表达式
执行字级计算的组合电力根据输入字的各个为,用逻辑门来计算输出字的各个位。用中等粗度的线来表示携带字的每个位的线路,用虚线来表示布尔信号结果
算术/逻辑单元是一种很重要的组合电路。
Y86的顺序实现
将处理组织成阶段
取指:从存储器读取指令字节,地址为程序计数器(PC)的值。指令指示符字节两个四位部分,称为icode(指令代码)和ifun(指令功能)。vaIP(下一条指令的地址)=PC+已取出指令的长度。
译码:从寄存器文件读入最多两个操作数,得到valA和/或valB。
执行:算数逻辑单元(ALU)根据ifun的值执行指令指明的操作,计算存储器引用的有效地址,或者增加或减少栈指针。得到的值称为valE。也可根据条件码执行跳转。
访存:将数据写入存储器,或者从存储器读出数据。读出的值为valM。
写回:最多可以写两个结果到寄存器文件。
更新PC:将PC设置成下一条指令的地址。
SEQ硬件结构
取指:将程序计数器寄存器作为地址,指令存储器读取指令的字节。
译码:寄存器文件有两个读端口A和B,从这两个端口同时读取寄存器值valA、valB
执行:根据指令类型将ALU用于不同目的。
访存:数据存储器读入或写入一个存储器字。
写回:寄存器文件有两个端口
HCL描述中使用的常数值。这些值表示的是指令、功能码、寄存器ID、ALU操作和状态码的编码
代码调试中的问题和解决过程
xxx
xxx
本周代码托管截图
其他(感悟、思考等,可选)
xxx
xxx
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 3/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第五周 | 300/1300 | 2/9 | 30/90 | |
第六周 | 300/1600 | 1/10 | 20/90 |