题目一:
参考 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服务器分别用多进程和多线程实现成并发服务器并测试
多进程:
多线程: