2017-2018-1 20155207 《信息安全系统设计基础》第8周学习总结

2017-2018-1 20155207 《信息安全系统设计基础》第8周学习总结

教材学习内容总结

  • 输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程

课堂测试

1参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA 在Linux下完成“求命令行传入整数参数的和”测试代码传入自己的8位学号、上方提交代码、附件提交运行测试截图

代码

#include<stdio.h>
#include<stdlib.h>
main(int argc,char *argv[])
{
	int sum=0,i;
	for(i=0;;i++)
	{
		if(argv[i]=='\0')
			break;
		sum=sum+atoi(argv[i]);
	}
printf("sum=%d",sum);
}

【课上11111】【】【】【】【】

4·47

取指:icode:ifun = D:0
valP<-PC+1
译码:valB<-R[%ebp]
执行:valE<-valB+4
访存:valM<-M4[valB]
写回:R[%esp]<-valE R[%ebp]<-valM

y86-64汇编代码

bubble_b:  
.LFB22:  
.cfi_startproc  
pushl   %edi  
.cfi_def_cfa_offset 8  
.cfi_offset 7, -8  
pushl   %esi  
.cfi_def_cfa_offset 12  
.cfi_offset 6, -12  
pushl   %ebx  
.cfi_def_cfa_offset 16  
.cfi_offset 3, -16  
mrmovl   16(%esp), %edx  
mrmovl   20(%esp), %edi  
irmovl   $1, %eax  
subl     %eax, %edi  
jle      .L1  
subl     $1, %edi  
irmovl   $0, %esi  
.L6:  
rrmovl   %esi, %eax  
irmovl   $0 , ebx   
subl     %ebx, %esi  
jl       .L3  
.L7:  
rrmovl   %eax, %ecx  
addl     %ecx, %ecx  
addl     %ecx, %ecx  
addl     %edx, %ecx  
mrmovl   4(%ecx), %ecx  
rrmovl   %eax, %ebx  
addl     %ecx, %ebx  
addl     %ecx, %ebx  
addl     %edx, %ebx  
mrmovl   (%ebx), %ebx  
subl     %ebx, %ecx  
jge     .L4  
addl     %eax, %eax  
addl     %eax, %eax  
addl     %edx, %eax  
rmmovl   %ebx, 4(%eax)  
addl     %eax, %eax  
addl     %eax, %eax  
addl     %edx, %eax  
rmmovl   %ecx, 4(%eax)  
.L4:  
subl    $1, %eax  
irmovl  $-1, %edx  
subl    %edx, %eax  
jne .L7  
.L3:  
addl    $1, %esi  
subl    %edi, %esi  
jne .L6  
.L1:  
popl    %ebx  
.cfi_def_cfa_offset 12  
.cfi_restore 3  
popl    %esi  
.cfi_def_cfa_offset 8  
.cfi_restore 6  
popl    %edi  

.cfi_def_cfa_offset 4  
.cfi_restore 7  
ret  
.cfi_endproc  
.LFE22:  
.size   bubble_b, .-bubble_b  
.section    .rodata.str1.1,"aMS",@progbits,1

4·48

取指:icode:ifun = M1[PC] = C:0
rA:rB<-M1[PC+1]
valC<-M4[PC+2]
valP<-PC+6
译码:valB<-R[rB]
执行:valE<-valB+valC
SetCC
访存:-
写回:R[rB]<-valE

y86-64汇编代码

bubble_b:  
.LFB22:  
    .cfi_startproc  
    pushl   %edi  
    .cfi_def_cfa_offset 8  
    .cfi_offset 7, -8  
    pushl   %esi  
    .cfi_def_cfa_offset 12  
    .cfi_offset 6, -12  
    pushl   %ebx  
    .cfi_def_cfa_offset 16  
    .cfi_offset 3, -16  
    mrmovl   16(%esp), %edx  
    mrmovl   20(%esp), %edi  
    irmovl   $1, %eax  
    subl     %eax, %edi  
    jle      .L1  
    subl     $1, %edi  
    irmovl   $0, %esi  
.L6:  
    movl    (%ebx,%eax,4), %edx  
    movl    4(%ebx,%eax,4), %ecx  
    cmpl    %edx, %ecx  
    movl    %edx, %ebp  
    cmovle  %ecx, %ebp  
    movl    %ebp, (%ebx,%eax,4)  
    cmovge  %ecx, %edx  
    movl    %edx, 4(%ebx,%eax,4)  
    subl    $1, %eax  
    cmpl    $-1, %eax  
    jne .L6  
.L7:  
    rrmovl   %eax, %ecx  
    addl     %ecx, %ecx  
    addl     %ecx, %ecx  
    addl     %edx, %ecx  
    mrmovl   4(%ecx), %ecx  
    rrmovl   %eax, %ebx  
    addl     %ecx, %ebx  
    addl     %ecx, %ebx  
    addl     %edx, %ebx  
    mrmovl   (%ebx), %ebx  
    subl     %ebx, %ecx  
    jge     .L4  
    addl     %eax, %eax  
    addl     %eax, %eax  
    addl     %edx, %eax  
    rmmovl   %ebx, 4(%eax)  
    addl     %eax, %eax  
    addl     %eax, %eax  
    addl     %edx, %eax  
    rmmovl   %ecx, 4(%eax)  
.L4:  
    subl    $1, %eax  
    irmovl  $-1, %edx  
    subl    %edx, %eax  
    jne .L7  
.L3:  
    addl    $1, %esi  
    subl    %edi, %esi  
    jne .L6  
.L1:  
    popl    %ebx  
    .cfi_def_cfa_offset 12  
    .cfi_restore 3  
    popl    %esi  
    .cfi_def_cfa_offset 8  
    .cfi_restore 6  
    popl    %edi  
  
    .cfi_def_cfa_offset 4  
    .cfi_restore 7  
    ret  
    .cfi_endproc  
.LFE22:  
    .size   bubble_b, .-bubble_b  
    .section    .rodata.str1.1,"aMS",@progbits,1

教材学习中的问题和解决过程

  • 问题1:进程和线程有什么区别
  • 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
  1. 线程的划分尺度小于进程,使得多线程程序的并发性高。
  2. 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
  3. 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
  4. 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

代码调试中的问题和解决过程

代码托管

上周考试错题总结

  • 上周课下测试忘记写了,我写了这篇部落格对每道题都做了自己的理解和查找的解析

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

- [20155223](http://www.cnblogs.com/battlefieldheros/p/7820001.html)
- 结对照片
- 结对学习内容
    - XXXX
    - XXXX
    - ...

其他(感悟、思考等,可选)

上周蓝墨云的课下测试我忘记做了,这周写了博客来完成课下测试,发现这种自行寻找答案的学习方式大有益处。以后如果可以坚持的话我一定争取每次课下测试都写博客来对错题进行解析。同时感谢娄老师给我这次弥补作业的机会

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted on 2017-11-12 19:09  方片8  阅读(170)  评论(0编辑  收藏  举报