2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结

news/2024/7/2 11:58:12

- 2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结

- 教材学习内容总结

  • 程序员可见的状态:Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分,这称为程序员可见状态。包括:程序寄存器、条件码、程序状态、程序计数器和内存。

  • Y86-64指令:Y86-64指令是x86-84指令集的一个子集。它只包括8字节整数操作。有4个整数操作指令:addq、subq、andq和xorq。有7个跳转指令:jmp、jle、jl、je、jne、jge和jg。有6个条件传送指令:cmovle、cmovl、cmove、cmovne、cmovge和cmovg。

  • 汇编机器码间的转换。

  • Y86-64状态码:
    代码值1,命名为AOK,表示正常操作;
    代码值2,命名为HLT,表示遇到器执行halt指令;
    代码值3,命名为ADR,表示遇到非法地址;
    代码值4,命名为INS,表示遇到非法指令。

  • Y86-64指令集:
    1296608-20181020174151525-101289632.png

  • Y86-64程序寄存器标识符:
    1296608-20181020174215617-1484478377.png

  • Y86-64指令集的功能码:
    1296608-20181020174223462-1420805705.png

  • Y86-64实例:
    教材上实例代码:
    1296608-20181020174244093-1349194228.png

gcc汇编及objdump反汇编后得到的x86-64代码:
1296608-20181020174251659-156071087.png

教材中给出了Y86-64的汇编代码

  • x86-64代码和Y86-64的异同点。

  • YIS环境的构建与测试:
    1296608-20181020174509444-1925045015.png

1296608-20181020174517892-927161120.png

  • 逻辑门:逻辑门是数字电路的基本计算单元。它们产生的输出,等于它们输入位值的某个布尔函数。包括:与(AND)、或(OR)和非(NOT)。

  • 组合电路:将狠多的逻辑门组合成一个网,就能构建计算块。

  • 组合电路和HCL布尔表达式

  • 字级的组合电路和HCL整数表达式

  • 实现所有Y86-64指令所需要的计算可以被组织成6个基本阶段。包括:取指、译码、执行、访存、写回合更新PC。

取指:取指阶段从内存读取指令字节,地址为程序计数器的值。

译码:译码阶段从寄存器文件读入最多两个操作数,得到相应的值,并读入指令指明的寄存器。

执行:执行阶段,ALU要么执行指令指明的操作,计算内存引用的有效地址,要么增加或减少栈指针。

访存:访存阶段可以将数据写入内存,或者从内存读出数据。

写回:写回阶段最多可以写两个结果到寄存器文件。

更新PC:将PC设置成下一条指令的地址。

  • SEQ的时序:
    SEQ的实现包括组合逻辑和两种存储器设备:时钟寄存器和随机访问存储器。

组织计算原则:从不回读。处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。

- 上周考试错题总结

- 错题1:

x86-64 Linux中,%rbp的值为0x108, pushq %eax后,%rbp的值为()

A .
0x100
B .
0x108
C .
0x110
D .
0x118

  • 答案:B
  • 解析:push不影响%rbp的值。

- 错题2:

x86-64中,(%rsp)寄存器用来保存运行时栈的结束位置(栈顶)。

- 错题3:

Linux汇编中,销毁栈帧的语句是( )

A .
movq %rbp, %rsp
popq %rbp
B .
leave
C .
enter
D .
pushq %rbp
movq %rsp, %rbp

  • 答案:A B
  • 解析:
    leave等价于:
    movq %rbp, %rsp
    popq %rbp

转载于:https://www.cnblogs.com/brs666/p/9822432.html


http://lihuaxi.xjx100.cn/news/245779.html

相关文章

request.getparameter特殊字符变成?号问号_15 个不可不知的 Linux 特殊字符,你懂几个?...

不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有用处呢,今天的文章就给大家简单地科普一下 Linux 中你需要了解的 15 个特殊字符,想学或刚学 Linux 的小伙伴赶紧…

Libgdx学习笔记:Simple text input

2019独角兽企业重金招聘Python工程师标准>>> 官方Wiki:https://github.com/libgdx/libgdx/wiki/Simple-text-input 实现接口TextInputListener public class MyTextInputListener implements TextInputListener { Overridepublic void input (String …

javascript与java的不同之处

javascript与java的不同之处 虽然很像,但不是一种语言。 二者的区别体现在: 首先,它们是两个公司开发的不同的两个产品,Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发, 而JavaScri…

学术青年如何克服拖延症——5条技巧助你前进

雷锋网 AI 科技评论按:「我准备好了就开始」(或者说「拖延症」),以及「即便动起手来也觉得举步维艰」大概是每个现代人都逃不过的日常感受,不管是学习、在企业中工作,还是从事学术研究。我们可能都看过许多…

php 能打印一个没有实例化的类_你理解 PHP 中的静态方法吗?

它仍然是一个有争议的话题。让我们尝试了解原因。函数中的静态变量您可能已经看过以下代码:function testStatic() {static $x 0;$x;return $x; }在这里,我们每次调用 testStatic() 时,关键字 static 允许递增 $x:testStatic(); …

mysql之修改表引擎

版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/49817841 刚入门mysql的时候,对innodb引擎和myisam引擎没有很好的理解,所以表引擎用的基本上就是myisam,反正也不懂哪一个好…

Unix_Linux系统定时器的应用(案例)

2014-05-05 Created By BaoXinjian 一、摘要 关于任务定时的命令crontab,在Linux中应用还算常见,这次为了配合开发完成一些辅助功能,以及一些备份更新等脚本,就需要crontab来完成,在windows下也就是一个批处理&#xf…

约瑟夫环 猴子选大王

<? /*** 猴子选大王&#xff1a;一群猴子排成一圈&#xff0c;按1,2,…,n依次编号。* 然后从第1只开始数&#xff0c;数到第m只,把它踢出圈&#xff0c;从它后面再开始数&#xff0c;再数到第m只&#xff0c;在把它踢出去…&#xff0c;* 如此不停的进行下去&#xff0c;直…