题目一:

参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA 在Linux下完成“求命令行传入整数参数的和”

测试代码传入自己的8位学号

答题过程:

参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA ,得知应该在代码中调用命令行参数。

参考C语言命令行参数的使用知道了其基本格式为main(int argc,char * argv[]) ,第一个int型变量argc表示的是命令行参数的个数,第二个*char型变量argv的作用是存储用户从命令行传递进来的参数。于是编写代码:

#include<stdio.h>
#include<stdlib.h>
void 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);
}

题目二:

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

把X86-64汇编翻译成Y86-64汇编,并给出相应机器码的截图(使用附件中的Y86-64模拟器)

解答过程:

将第一题中的.c文件变成.o文件,然后输入objdunp -d 8-1.o 查看X86-64中的反汇编代码。

由于之前在实验楼中安装的Y86汇编器,为了方便起见在我的电脑里面重新进行了安装。安装步骤如下:

首先安装词法分析工具和Tcl/Tk 支持图形界面,这个之前已经在电脑里安装过了,就没有再输命令了。

下载并解压sim.tar压缩包,下载地址参考实验楼网址( http://labfile.oss.aliyuncs.com/courses/413/sim.tar)。

输入命令wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar下载,接着输入命令tar -xvf sim.tar解压sim压缩包。

打开sim中的Makefile,修改mkaefile文件,如下:

进入sim目录,终端输入make clean和make。

进入pipe目录以pism为例运行图形界面:./psim -t -g ../y86-code/asum.yo

题目三:

基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端

服务器响应消息格式是

客户端IP:XXXX
服务器实现者学号:XXXXXXXX
当前时间: XX:XX:XX

解答过程:

课下作业:

  • 4.47

  • 4.48

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

多进程:

多线程: