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

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

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

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

解答:

  • 编写代码

    #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\n",sum);
    }
    

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

  • 问题就是粗心,没有注意到是二维数组,然后怎么编译都没用通过,浪费了很多时间。
  • 解决方法就是./a.out 的后面的学号写成两个数字就可以啦!

运行结果

2.汇编

  • 把第一个练习中的代码在X86-64(Ubuntu)中反汇编,给出汇编代码和机器码的截图
  • 把X86-64汇编翻译成Y86-64汇编,并给出相应机器码的截图(使用附件中的Y86-64模拟器)

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

  • 问题一: 在安装Y86的时候出现了这个问题

  • 解决:通过输入命令sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lock,以及sudo rm /var/lib/dpkg/lock之后成功解除占用。

运行结果

  • X86-64汇编代码

  • X86-64机器码

3.实现daytime

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

课下测试1

  • 1 完成家庭作业4.47,4.48,4.49
  • 2 相应代码反汇编成X86-64汇编
  • 3 把上述X86-64汇编翻译成Y86汇编,并给出相应机器码

4.47

解题思路:

  • 将题目所给的数组元素代码转换成指针索引的代码

具体方法为:将指针赋给数组的头地址,然后按位移动指代

    C格式:int *data=a;

    *(data+i);
  • 将所得的C程序汇编一下获得相应的汇编代码
  • gcc -S .c -o
  • 去掉相应的“.”
  • 将所得的Y86代码与用机器产生的反汇编代码比对,验证准确性

解题过程:

对比及修改

 

注意事项

  • 对应的指针代码要在能运行与检测的基础上构建,在调用相应的冒泡程序时,因先利用GCC -G后调试一下。不然的话在没有可执行的程序做保证的话会由于书写错误或者指代错误等错误因素导致数据意外存储而没有报错,这样无法得到汇编及正确的代码
  • 在可执行的C代码汇编版本中:movl指令对应的Y86指令有三个,要注意区分三者后带的参数类型
  • Y86没有相应的乘除法操作,要转换成加减或者与,抑或运算完成,为方便起见,规定的数据不讨论符号,对于乘除法操作,以最优解替换
时间: 2024-11-05 19:32:17

2017-2018-1 20155336 《信息安全系统设计基础》第八周课堂测试的相关文章

信息安全系统设计基础第八周总结

Linux基本概念 命令行操作 [Tab] 使用Tab键来进行命令补全 [Ctrl+c] 立即停止并恢复到可控状态,可以使用Ctrl+c键来强行终止当前程序(并不会使终端退出) 用户及文件管理权限 一.Linux用户管理 由于 Linux 的 用户管理 和 权限机制 ,不同用户不可以轻易地查看.修改彼此的文件. who 命令其它常用参数 (3)用户组 方式1.使用groups命令 方式2.查看/etc/group文件 /etc/group文件格式说明: /etc/group 的内容包括用户组(G

信息安全系统设计基础第八周学习总结

第十章 系统级I/O 怎样学习系统编程(利用Linux学习Linux编程) 一.Unix I/O 一个Unix文件就是一个m字节的序列:B0,B1,B2,…,Bk,…,Bm-1 二.打开和关闭文件 1.进程通过调用open函数来打开一个已存在的文件或者创建一个新文件的: Int open(char *filename, int flags, mode_t mode); 2.通过调用close函数关闭一个打开的文件: Int close(int fd); 三.读和写文件 1.分别调用read和wr

信息安全系统设计基础第八周学习总结-吕松鸿

第10章 系统级I/O I/O:在主存和外部设备之间拷贝数据的过程. 10.1Unix I/O 一个Unix文件就是一个m个字节的序列: B0,B1,B2…Bk…B(m-1) 1.所有的输入输出都能以一种统一且一致的方式来执行: (1)打开文件 a.描述符:内核返回一个小的非负整数,它在后续对此文件的所有操作中标识这个文件. b. Unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(描述符为0).标准输出(描述符为1).标准错误(描述符为2). (2)改变当前的文件设置. (3)读写文

信息安全系统设计基础第八周学习笔记

系统级I/O 前言:输入/输出是在主存和外部设备(如磁盘驱动器.终端和网络)之间拷贝数据的过程.输入操作时从I/O设备拷贝数据到主存,而输出操作时从主存拷贝数据到I/O设备. 10.1  Unix I/O 一个Unix文件就是一个m个字节的序列:B0,B1,B2,B3...Bk...Bm-1. 所有的I/O设备,如网络.磁盘盒终端,都被模型化为文件,而所有的输入和输出都被当做对相应的文件的读和写来执行.这是一种应用接口,成为Unix I/O. ①打开文件:一个应用程序通过要求内核打开相应地文件,

20145216 史婧瑶《信息安全系统设计基础》第一周学习总结

20145216 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 Linux基础 1.ls命令 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略.我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录.其中“-a” 就是选项,改变了显示的内容.如图所示: 2.man命令 man命令可以查看帮助文档,如 man man : 若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数:若不加数字,那man命令默认从数字较

20145311 《信息安全系统设计基础》第一周学习总结

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E

20145216史婧瑶《信息安全系统设计基础》第九周学习总结

20145216史婧瑶<信息安全系统设计基础>第九周学习总结 教材内容总结 第十章 系统级I/O 输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程. 第一节 Unix I/O 这一节涉及到操作系统的基本抽象之一--文件.也就是说,所有的I/O设备都被模型化为文件,而所有的输入输出都被当做对相应文件的读/写.相关的执行动作如下: 1.打开文件: 应用程序向内核发出请求→要求内核打开相应的文件→内核返回文件描述符 文件描述符:一个小的非负整数,用来在后续对此文件的所有操作中标识这个文件.有

信息安全系统设计基础第八周期中总结

信息安全系统设计基础第八周期中总结 [学习时间:12小时] [学习内容:CHAPTER1——CHAPTER7内容重点:疑问与考试错题分析:实验环节难点回顾] 一.课本章节内容重点 (一)第一章 1.信息就是“位+上下文”. [理解:信息本身的表示形式是相对固定的,在linux系统内(以及其他的操作系统内),操作信息.数据信息等都是以二进制形式存储的:这些二进制位如何理解.怎么划分,是靠上下文的要求决定的.二者联系起来组成了“信息”的概念.] 2.系统的硬件组成 总线:携带信息字节并负责在各个部件

20145311 《信息安全系统设计基础》第二周学习总结

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分