20155325 2017-2018-1 《信息安全系统设计基础》第七周学习总结
教材学习内容总结
- x86-64的movq指令:irmovq,rrmovq,mrmovq,rmmovq。分别显式地指明源和目的的格式。i-立即数,r-寄存器,m-内存。
- 操作指令(详见P246)
1.四个整数操作指令
2.7个跳转指令
3.6个条件传送指令
4.ret,call,pushq,popq,halt
-
指令编码
第一个字节:高四位-代码,低四位-功能(只有在一组相关指令共用一个代码时才有用) -
Y86-64 异常
State值 | 名字 | 含义 |
---|---|---|
1 | ACK | 正常操作 |
2 | HLT | 遇到器执行halt指令 |
3 | ADR | 遇到非法地址 |
4 | INS | 遇到非法指令 |
教材学习中的问题和解决过程
- 问题1:P248习题4.1如何手工对指令编码
- 问题1解决方案:看书总结出一段套路:
eg. irmovq $15,%rbx
1.看指令 ,在P246图4-2和P247 图4-3找到对应的格式
30 F rB V
2.在P247中间的表找寄存器rB V位置对应的数字
3.如果有立即数,比如$15。此时都是十进制,转化为十六进制0x00 00 00 00 00 00 00 0f(在Y86-64中常数总8字节。,),然后两位一组,反向顺序0f 00 00 00 00 00 00 00。
结果:30f30f00000000000000
这一条指令地址0x100,两个数算一个字节,所以这一条指令占10个字节,则下一条指令的地址0x10a
- 问题2:P251Y86-64 code中strat++;的汇编是
irmovq $8,%r8;
……
addq %r8,%rdi;
不理解为什么要+8
- 问题2解决方案:经过大佬佳的指点,在P252里,传到这个函数里的是个数组,所以start++本身的意思是指向数组中的下一个数字,又因为start是个指针本身是个地址,所以+8 。
代码调试中的问题和解决过程
-
问题1:在做实验二-4国密算法运行失败
-
问题1解决方案:gcc sm4test.c sm4.c
代码托管
结对
- 本周结对学习情况
- 20155328
- 结对照片
- 结对学习内容
- 第四章
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 16篇 | 400小时 | |
第1周 | 9/9 | 1/1 | 19/19 | 熟练下载安装技能,锻炼解决问题能力 |
第2周 | 380/389 | 2/3 | 26/45 | 1、7章 |
第3,4周 | 1270/1659 | 3/6 | 42/87 | 2、10章 |
第5周 | 20/1679 | 2/8 | 30/117 | 实验一&3章 |
第6周 | 223/1902 | 1/9 | 20/137 | 课堂测试、课下作业、第八章 |
第7周 | 3020/4770 | 2/11 | 20/157 | 实验二、第四章 |
-
计划学习时间:20小时
-
实际学习时间:20小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)