• 2017-2018-1 20155315 《信息安全系统设计基础》第八周课堂测试


    1.求命令行传入整数参数的和

    要求

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

    代码调试中的问题及解决方法

    • 问题:
      一开始使用命令行参数的时候,输入的是./a.out 20155315,提取字符串的时候没有注意到是一个二维数组,出现断错误。
    • 解决方法: 看了老师给的例子,将命令行输入改成./a.out 2 0 1 5 5 3 1 5,运行代码后得出了正确答案

    运行结果

    2.汇编

    要求

    • 把第一个练习中的代码在X86-64(Ubuntu)中反汇编,给出汇编代码和机器码的截图

    代码调试中的问题及解决方法

    • 问题:
      运行程序后,分别得到浮点型和整数型的8位16进制表示,但是将其化成二进制后,发现怎么都找不到匹配序列。
    • 解决方法: 算不出结果的时候,突然想到我的电脑是小端机器,因此,如果要将其转化为二进制,就应从后往前转换。果然,改变位置之后,我得到匹配序列为1010011000011

    运行结果

    • X86-64汇编代码
    • X86-64机器码

    3.实现daytime

    要求

    • 基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端
    • 服务器响应消息格式是
    客户端IP:XXXX
    服务器实现者学号:XXXXXXXX
    当前时间: XX:XX:XX
    

    代码调试中的问题及解决方法

    • 问题: 修改完书上的代码之后,编译的时候一直出错,显示函数未定义,但是函数都在csapp.h中定义了。
    • 解决方法: 查找资料发现,要同时编译csapp.c和修改的源代码。

    运行结果

    4.第八周课下作业1

    要求

    完成家庭作业4.47,4.48

    遇到的问题

    分析每一步的功能的时候,要一步一步地调试。

    结果

    1. 4.47
    取指阶段 icode:ifun = M1[PC]= D:0
             valP<-PC+1
    译码阶段:valB<-R[%ebp]
    执行阶段:valE<-valB+4
    访存阶段:valM<-M4[valB]
    写回阶段:R[%esp]<-valE 
             R[%ebp]<-valM
    
    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
    

    5.第八周课下作业2

    要求

    把课上练习3的daytime服务器分别用多进程和多线程实现成并发服务器并测试

    遇到的问题

    运行代码的时候,出现denied错误,查找资料发现是没有加上sudo权限。

    运行结果

    • 多进程
    • 多线程
  • 相关阅读:
    pysocketserver
    协程
    py模块和包
    py网络编程
    GridView绑定技巧终结者
    iOS 证书/私钥/代码签名/描述文件
    八拜之交
    POJ3230(Travel)
    POJ2553(The Bottom of a Graph)
    动态规划的实质
  • 原文地址:https://www.cnblogs.com/-zyl/p/7821939.html
Copyright © 2020-2023  润新知