题目二
过程:
终端输入gcc -E sum.c -o sum.i
终端输入gcc -S test.1.i -o main.s
用cat sum.s查看汇编代码,objdump -d sum命令查看机器码
sudo apt-get install bison flex
sudo apt-get install tcl8.5-dev tk8.5-dev tcl8.5 tk8.5
输入命令
wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar
下载,接着输入命令tar -xvf sim.tar解压sim压缩包。
再输入
./psim -t -g ../y86-code/asum.yo
题目三
客户端IP:XXXX
服务器实现者学号:XXXXXXXX
当前时间: XX:XX:XX
过程
#include "./csapp.h"
int main(int argc, char **argv)
{
int clientfd, port;
char *host, buf[MAXLINE];
rio_t rio;
if (argc != 3) {
fprintf(stderr, "usage: %s <host> <port>\n", argv[0]);
exit(0);
}
host = argv[1];
port = atoi(argv[2]);
clientfd = Open_clientfd(host, port);
Rio_readinitb(&rio, clientfd);
while (Fgets(buf, MAXLINE, stdin) != NULL) {
static char timestr[40];
time_t t;
struct tm *nowtime;
time(&t);
nowtime = localtime(&t);
strftime(timestr,sizeof(timestr),"%Y-%m-%d %H:%M:%S",nowtime);
printf("client IP:127.0.0.1\n");
printf("number:20165232\n");
printf("now:%s\n",timestr);
printf("\n");
Rio_writen(clientfd, buf, strlen(buf));
Rio_readlineb(&rio, buf, MAXLINE);
Fputs(buf, stdout);
}
Close(clientfd); //line:netp:echoclient:close
exit(0);
}
#include "./csapp.h"
void echo(int connfd,char *haddrp);
int main(int argc, char **argv)
{
int listenfd, connfd, port;
socklen_t clientlen;
struct sockaddr_in clientaddr;
struct hostent *hp;
char *haddrp;
if (argc != 2) {
fprintf(stderr, "usage: %s <port>\n", argv[0]);
exit(0);
}
port = atoi(argv[1]);
listenfd = Open_listenfd(port);
while (1) {
clientlen = sizeof(clientaddr);
connfd = Accept(listenfd, (SA *)&clientaddr, &clientlen);
/* Determine the domain name and IP address of the client */
hp = Gethostbyaddr((const char *)&clientaddr.sin_addr.s_addr,
sizeof(clientaddr.sin_addr.s_addr), AF_INET);
haddrp = inet_ntoa(clientaddr.sin_addr);
printf("server connected to %s (%s)\n", hp->h_name, haddrp);
echo(connfd,haddrp);
Close(connfd);
}
exit(0);
}
void echo(int connfd,char *haddrp)
{
static char timestr[40];
time_t t;
struct tm *nowtime;
time(&t);
nowtime = localtime(&t);
strftime(timestr,sizeof(timestr),"%Y-%m-%d %H:%M:%S",nowtime);
size_t n;
char buf[MAXLINE];
rio_t rio;
Rio_readinitb(&rio, connfd);
while((n = Rio_readlineb(&rio, buf, MAXLINE)) != 0) { //line:netp:echo:eof
//printf("server received %d bytes\n", (int)n);
printf("service IP:%s\n",haddrp);
printf("number:20165232\n");
printf("now:%s\n",timestr);
printf("\n");
Rio_writen(connfd, buf, n);
}
}
原文:https://www.cnblogs.com/heyanda/p/10051884.html