• 20145240 《信息安全系统设计基础》第六周同学问题总结


    20145240 《信息安全系统设计基础》第六周同学问题总结

    学习目标

    • 了解ISA抽象的作用

    • 掌握ISA,并能举一反三学习其他体系结构

    • 了解流水线和实现方式

    学习资源

    • 教材:第四章《处理器体系结构》,详细学习指导见教材导读与每周考试重点。:重点是4.1节,4.2节,4.3节。

    • 实验楼课程资料:实验五,课程邀请码:W7FQKW4Y

    • 学习任务

    1、阅读教材,完成课后练习(书中有参考答案),考核:练习题把数据变换一下

    2、教材中相关代码运行、思考一下,读代码的学习方法见「代码驱动的程序设计学习」。

    3、教材4.1-4.3中练习,重点:4.1 4.2 4.5 4.6 4.8 4.10 4.11 4.12 4.16 4.17 4.19 4.21 4.24

    同学们遇到的问题及解决方法

    问题: 对于Y86指令集中的nop,具体作用到底是什么,只需对PC加1是什么含义,为什么说“标号为'icode'和‘ifun’的控制逻辑块计算指令和功能码,等于从存储器读出的值,或者当指令地址不合法时(由信号imem error指明),这些值对应于nop指令”?

    解决方案: nop作用:这是一个占位指令,他不做任何事,后续为了实现流水线,它有一定的作用。

    问题: 打开虚拟机时提示挂载失败,但安装YIS的安装包在Windows系统上,需使用共享文件夹中的安装包。

    解决方案: 解决过程:重新手动挂载,再执行安装过程。

    问题1:练习题4.17,写出SEQ实现中信号need_valC的HCL代码

    解决方案:bool need_valC = icode in { IIRMOVL, IRMMOVL, IMRMOVL, IJXX, ICALL };

    问题2:课本P263的need_regids的HCL描述,无法理解这些HCL描述怎样得来的

    解决方案:need_regids说的是这个指令是否包括一个寄存器指示符字节,所以结合课本P232的图4-2,need_regids的HCL代码应该包括所有含寄存器rA和rB的{IRRMOVL,IOPL,IPUSHL,IPOPL,IIRMOVL,IRMMOVL,IMRMOVL}need_valC的HCL代码同理。

    问题:输入make asuml.yo指令出现错误,make:'asuml.yo' is up to date

    解决方案:Makefile没有问题,主要原因是第一次已经make过一遍了,第二次如果没有修改过直接编译就会出现错误,可以先make clean一下,再make一个工程就没有问题了。

    问题:为什么popl指令执行过程中在译码阶段要读两次栈指针

    解决方案:为了保证和pushl指令执行过程的一致性,先完成存储器的操作再更新栈指针,执行是在访存和写回阶段之前,所以执行阶段先给栈指针加4,但是要用没加过4的原始值作为存储器操作地址。写回时也要用加4的栈指针更新地址,也要用没加4的值作为存储器读地址,所以译码时要访问两次栈指针。

    问题1:练习题4.1中的两个问题,练习题中阐述了。.ops 0x100 表明代码的起始地址是0x100,那为什么第一个指令 irmovl $15 , %ebx 不是从0xF+0x100呢?

    解决方案:一个是%ebx的值,另一个则是地址的值,二者不一样,二者也是不会相互影响的。所以答案直接就是0xF ,最终答案应该是30F30F000000

    问题2:之后针对于练习4.1每一行代码的地址遇到了问题。为什么执行完代码irmovl $15 , %ebx后地址变为0x106?

    解决方案:通过分析书上的P234页的例子就可以知道,需要4字节常数,每两个数算作一字节。加上imovl命令的编码30F30F000000所以一共为6位,地址变化为0x106,之后的也一样,指令编码和4字节常数,不同的Y86指令又有不同的要求,理解图4-2、4-3的表就可以理解了。

    问题:在官方网站下可以看到chapter4,可以看到source distribution项目,下载所需要的源文件。用tar xf sim.tar命令进行解压出现无法打开的错误。

    解决方案:1、用cd ~和ls查看,发现Home目录当中并没有下载的sim.tar文件 2、打开firefox下载文件所在的文件夹,找到sim.tar并把它拖入到主文件夹Home中3、再次用cd ~和ls便可以看见目录中已经有了下载的sim.tar,这时候就可以用tar xf sim.tar命令对其进行解压了。

    问题:4.12题目:valM=M4[valA],不清楚这一步具体如何实现

    解决方案:由上一步知:valA=124,则M4[124]查看指令序列%esp=124找到这行指令:pushl %edx,知%edx=9

    问题:4.6题目:指令subl有什么用处?

    解决方案:在这个测试里,subl指令将%esp的起始值与压入栈中的值进行了比较。这个减法的结果为0,表明压入的是%esp的旧值。

    问题:虚拟机莫名其妙,不但什么都下不了,而且下载之后make命令显示‘asuml.yo’ is up to date.

    解决方案:先make clean一下,再make一个工程就没有问题了

    问题:安装Y86模拟器时,无法编译.yo文件

    解决方案:使用修理ubuntupackage broken命令,sudo apt-get --fix-broken install

    问题:p238Y86代码为什么不能直接用addl $4,%ecx代替11、12行代码内容?

    解决方案:对于整数操作命令,它们只能对寄存器数据进行操作,立即数必须先放到一个寄存器里。

    问题:实验楼实验中在“构建YIS环境”时,输入了sudo ln -s /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtk.so命令。第一次输入时无提示,第二次输入时提示ln:无法创建符号链接"/usr/lib/libtk.so":文件已存在,为什么要输入两遍?只输一遍可以吗?

    解决方案:sudo ln -s 源文件 目标文件命令功能为:为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。建立符号链接时,如果[链接名]已经存在但不是目录,将不做链接。[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。如果[链接名]是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原“目标”的符号链接文件。

    问题:输入make指令后,直接离开目录

    解决方案:应进入Y86-code目录

    问题:在安装sudo apt-get install bison flex时出现了问题E:无法获得锁 /var/lib/dpkg/lock - open(11:资源暂时不可用)``E:无法锁定管理目录(/var/lib/dpkg/),是否有其它进程正在占用它

    解决方案1:终端输入ps -aux,列出进程,找到含有apt-get的进程,直接sudo kill PID解决

    #:ps -aux (列出进程,形式如)
    root 5765 0.0 1.0 18204 15504 ? SN 04:02 0:00 apt-get -qq -d
    找到最后一列以apt-get 开头的进程
    #:sudo kill -9 该进程的PID
    

    解决方案2:强制解锁

    #:sudo rm /var/cache/apt/archives/lock
    #:sudo rm /var/lib/dpkg/lock
    

    问题:找不到指令yas。

    解决方案:bixon flex词法分析工具没有安装

    问题:磁盘不共享的问题,Please resume and shutdown Windows fully (no hibernation or fast restarting)

    解决方案:windows下为了快速启动,内核采用了“休眠”的模式,启动时就是混合启动,所以速度很快,一般8秒左右;于是只要在win10下,命令行彻底关机就行了:shutdown -s -t 1

    陈颢文同学的博客里为大家提供了如何在Ubuntu中创建与Windows的共享文件夹的详细教程~

    问题:关于Linux下Y86的卸载

    解决方案:

    输入如下命令:
    
    sudo apt-get autoremove --purge
    
    sudo ———— 获取 root 权限
    
    apt-get ——— 执行安装卸载功能的软件
    
    autoremove — 告诉 apt-get 我们所要做的操作是移除软件
    
    --purge ——— 注意这前面是两个短划线,这个参数是告诉他们要完整的干净的彻底的移除
    
    最后在这条指令后加上你所要卸载的全称即可
    

    总结

    本周内容相对轻松,同学们的问题集中在y86模拟器的安装以及汇编指令的运用上。关于模拟器的安装,大多数同学通过参考同学的博客以及百度都顺利解决,由于刚开始用虚拟机,还是有很大一部分同学没有在虚拟机上进行Y86模拟器的安装,而是直接在实验楼上进行了实践,还是可以尝试在虚拟机中重新进行安装测试。关于课本上的代码,只要熟知命令的作用与区别,便能很好的掌握例题的做法。周一考试的题目也相对简单,只要认真学习例题的同学,本周的考试应该是很轻松的。
  • 相关阅读:
    关于前后端跨域问题的解决
    vue+vuex+router+element ui
    winfrom导入excel文件
    winform 导出excel文件
    winfrom DataGridView 列表操作
    LaTex之CTex初体验一
    图像配准的步骤
    Phase Based Feature Detection and Phase Congruency(相位一致性)
    查找论文中的代码
    KullbackLeibler
  • 原文地址:https://www.cnblogs.com/20145240lsj/p/6150698.html
Copyright © 2020-2023  润新知