日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

20155212 2017-2018-1 《信息安全系统设计》第8周课下作业

發(fā)布時間:2023/12/20 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20155212 2017-2018-1 《信息安全系统设计》第8周课下作业 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

20155212 2017-2018-1 《信息安全系統(tǒng)設(shè)計》第8周課下作業(yè)

題目1

  • 完成家庭作業(yè)4.47,4.48,4.49
  • 相應(yīng)代碼反匯編成X86-64匯編
  • 把上述X86-64匯編翻譯成Y86匯編,并給出相應(yīng)機(jī)器碼
  • 發(fā)操作過程、測試、問題解決過程博客鏈接
  • 4.47

    A. 書寫并測試一個C版本,用指針引用數(shù)組元素,而不是用數(shù)組索引。

    • 用指針引用數(shù)組元素:
    #include <stdio.h> /*Bubble sorts:Pointer version*/ void bubble_p(long *data,int count){long i, last, t;for(last = count-1; last > 0; last--){ for(i = 0; i < last; i++){if(*(data+i+1)<*(data+i)){t = *(data+i+1);*(data+i+1) = *(data+i);*(data+i) = t;}}} }void main(){int i;long data[5]={4, 1, 0, 2, 3};bubble_p(data, 5);for(i=0; i<5; i++){printf("%ld\t", *(data+i));}printf("\n"); }
    • 運行結(jié)果

    B. 書寫并測試這個函數(shù)和測試代碼組成的Y86-64程序。

    • 使用gcc -E Bubble.c -Og -o Bubble1.i、gcc -S Bubble.c -Og -o Bubble1.s編譯代碼,這樣生成符合原始C代碼整體結(jié)構(gòu)的機(jī)器代碼的優(yōu)化等級,便于理解。
    • X86-64匯編代碼
    bubble_p:leal -1(%rsi), %r9dmovslq %r9d, %r9jmp .L2 .L4:leaq 8(%rdi,%rax,8), %rsimovq (%rsi), %rcxleaq (%rdi,%rax,8), %rdxmovq (%rdx), %r8cmpq %r8, %rcxjge .L3movq %r8, (%rsi)movq %rcx, (%rdx) .L3:addq $1, %raxjmp .L5 .L6:movl $0, %eax .L5:cmpq %r9, %raxjl .L4subq $1, %r9 .L2:testq %r9, %r9jg .L6rep ret .LC0: main:pushq %rbxsubq $48, %rspmovq %fs:40, %raxmovq %rax, 40(%rsp)xorl %eax, %eaxmovq $4, (%rsp)movq $1, 8(%rsp)movq $0, 16(%rsp)movq $2, 24(%rsp)movq $3, 32(%rsp)movl $5, %esimovq %rsp, %rdicall bubble_pmovl $0, %ebxjmp .L8 .L9:movslq %ebx, %raxmovq (%rsp,%rax,8), %rdxmovl $.LC0, %esimovl $1, %edimovl $0, %eaxcall __printf_chkaddl $1, %ebx .L8:cmpl $4, %ebxjle .L9movl $10, %edicall putcharmovq 40(%rsp), %raxxorq %fs:40, %raxje .L10call __stack_chk_fail .L10:addq $48, %rsppopq %rbxret
    • Y86-64代碼
    .pos 0irmovq stack,%rspcall mainhalt bubble_p:irmovq $1, %r8subq %r8, %rsirrmovq %rsi, %r9rrmovq %r9, %r9jmp .L2 .L4:addq %rax, %raxaddq %rax, %raxaddq %rax, %raxaddq %rdi, %raxirmovq $8, %r10addq %r10, %raxrrmovq %rax, %rsimrmovq (%rsi), %rcxrrmovq %rax, %r8addq %r8, %r8addq %r8, %r8addq %r8, %r8addq %rdi, %r8rrmovq %r8, %rdxmrmovq (%rdx), %r8rrmovq %rcx, %r10subq %r8, %r10jge .L3rmmovq %r8, (%rsi)rmmovq %rcx, (%rdx) .L3:irmovq $1, %r8addq %r8, %raxjmp .L5 .L6:irmovq $0, %r8rrmovq %r8, %rax .L5:rrmovq %rax, %r10subq %r9, %r10 .L2:jg .L6ret main:pushq %rbpirmovq $48, %r8rrmovq %r8, %rspxorq %rax, %raxirmovq $4, %r8rmmovq %r8, (%rbp)irmovq $1, %r8rmmovq %r8, 8(%rbp)irmovq $0, %r8rmmovq %r8, 16(%rbp)irmovq $2, %r8rmmovq %r8, 24(%rbp)irmovq $3, %r8rmmovq %r8, 32(%rbp)irmovq $5, %r8rrmovq %r8, %rsirrmovq %rsp, %rdicall bubble_pirmovq $0, %r9rrmovq %r9 ,%rbxjmp .L8 .L9:rrmovq %rbx, %raxrrmovq %rax, %r8addq %r8, %r8addq %r8, %r8addq %r8, %r8addq %rsp, %r8rrmovq %r8, %rdxirmovq $1, %r10rrmovq %r10, %rdiirmovq $0, %r8rrmovq %r8, %raxcall _printf_chkrrmovq %r10, %rbx .L8:irmovq $4, %rbxjle .L9irmovq $10, %rdicall putcharmrmovq 40(%rsp), %raxje .L10call _stack_chk_fail .L10:irmovq $48, %r8addq %r8, %rsppopq %rbxret.pos 0x200 stack:


    • 主要修改內(nèi)容
      • leaq:要與``movq```類區(qū)分開
      • movq:要根據(jù)源和目的的類型劃分為不同的四種命令
      • addq類:必須是寄存器之間才能操作
      • cmpq:將第二操作數(shù)放到新寄存器,然后subq

    4.48

    • 不使用跳轉(zhuǎn),最多使用3次條件傳送
      - 代碼
      ```
      #include <stdio.h>
      /Bubble sorts:Pointer version/
      void bubble_p(long data,int count){
      long i, last, t;
      for(last = count-1; last > 0; last--){
      for(i = 0; i < last; i++){
      if((data+i+1)<(data+i)){
      t = (data+i)-(data+i+1);
      if(t>0){
      t = (data+i);
      (data+i) = (data+i+1);
      *(data+i+1) = t;
      }
      }
      }
      }
      }

      void main(){
      int i;
      long data[5]={4, 1, 0, 2, 3};
      bubble_p(data, 5);
      for(i=0; i<5; i++)
      {
      printf("%ld\t", *(data+i));
      }
      printf("\n");
      }
      ```
      • 分析:通過“t=(data+i)-(data+i+1)”來設(shè)置條件碼,通過comvg條件傳送指令實現(xiàn)if(t>0)中的三個賦值語句

    4.48

    • 不使用跳轉(zhuǎn),最多使用1次條件傳送
      • 代碼
      #include <stdio.h> #include <stack> using namespace std;/*Bubble sorts:Pointer version*/ void bubble_p(long *data, int count) {long i, last, t;stack <long> S;for (last = count - 1; last > 0; last--) {for (i = 0; i < last; i++) {if (*(data + i + 1)<*(data + i)) {t = *(data + i) - *(data + i + 1);if (t>0) {S.push(*(data+i+1));*(data + i + 1) = *(data+i);*(data + i) = S.top();S.pop();}}}} }void main() {int i;long data[5] = { 4, 1, 0, 2, 3 };bubble_p(data, 5);for (i = 0; i<5; i++){printf("%ld\t", *(data + i));}printf("\n"); }
      • 分析:使用棧。這里我調(diào)用了stack庫。

        題目2

        把課上練習(xí)3的daytime服務(wù)器分別用多進(jìn)程和多線程實現(xiàn)成并發(fā)服務(wù)器并測試

    基于socket 使用教材的csapp.h, csapp.c

    實現(xiàn)daytime(13)服務(wù)器(端口我們使用13+后三位學(xué)號)和客戶端
    服務(wù)器響應(yīng)消息格式是

    客戶端IP:XXXX
    服務(wù)器實現(xiàn)者學(xué)號:XXXXXXXX
    當(dāng)前時間: XX:XX:XX

    提交一個客戶端至少查詢?nèi)螘r間的截圖測試截圖
    提交至少兩個客戶端查詢時間的截圖測試截圖

    • Daytime

      DAYTIME協(xié)議是基于TCP的應(yīng)用,是一種有用的調(diào)試工具,它的作用是返回當(dāng)前時間和日期,格式是字符串格式。

      • 基于TCP的daytime服務(wù):daytime服務(wù)是基于TCP的應(yīng)用,服務(wù)器在TCP端口13偵聽,一旦有連接建立就返回ASCII形式的日期和時間,在傳送完后關(guān)閉連接。接收到的數(shù)據(jù)被忽略。
      • 基于UDP的daytime服務(wù):daytime服務(wù)也可以使用UDP協(xié)議,它的端口也是13,不過UDP是用數(shù)據(jù)報傳送當(dāng)前時間的。接收到的數(shù)據(jù)被忽略。
      • Daytime格式:Weekday, Month Day, Year Time-Zone
    • 使用man -k time | grep 2查看系統(tǒng)調(diào)用
    • 使用man 2 time查看time()
    • 查看localtime()
    • tm結(jié)構(gòu)體
      c struct tm { int tm_sec; /* Seconds (0-60) */ int tm_min; /* Minutes (0-59) */ int tm_hour; /* Hours (0-23) */ int tm_mday; /* Day of the month (1-31) */ int tm_mon; /* Month (0-11) */ int tm_year; /* Year - 1900 */ int tm_wday; /* Day of the week (0-6, Sunday = 0) */ int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */ int tm_isdst; /* Daylight saving time */ };

    • 多線程結(jié)果
    • 多進(jìn)程結(jié)果

    轉(zhuǎn)載于:https://www.cnblogs.com/dky20155212/p/7823349.html

    總結(jié)

    以上是生活随笔為你收集整理的20155212 2017-2018-1 《信息安全系统设计》第8周课下作业的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日日操狠狠干 | 欧美在线色 | 亚洲熟女综合色一区二区三区 | 91福利在线播放 | 欧美色偷偷 | 欧美国产成人精品一区二区三区 | 午夜免费一级片 | 香蕉久久夜色精品国产使用方法 | 欧美黄色小说视频 | 亚洲狼人av | 中文字幕乱码一区二区 | 潘金莲三级野外 | 日本三级精品 | 狠狠干干 | 毛片aa | 写真福利片hd在线播放 | 爽爽影院在线免费观看 | 欧美黑人精品一区二区 | 九九视频免费在线观看 | 日本啪啪啪一区二区 | 亚洲精品97久久中文字幕 | 久久精品资源 | 内裤摩擦1v1h| 九九热精品在线视频 | 国产麻豆精品在线观看 | 中文字幕电影一区二区 | 成人免费视频免费观看 | 青青草视频免费 | 伊人久久一区二区 | 亚州国产精品 | 久久网站免费 | 四虎影视免费在线观看 | 亚洲熟妇丰满大屁股熟妇 | 综合色av| 国产无套精品一区二区 | 青青草国产成人av片免费 | www.桃色 | 日本一区二区视频在线播放 | 欧美xxxxbbbb| 美国免费黄色片 | 网站黄在线观看 | 麻豆乱淫一区二区三区 | 欧美一级电影在线 | 中文字幕精品国产 | 成人免费在线观看网站 | 日韩亚洲精品中文字幕 | 亚洲一区二区三区在线视频观看 | 欧美一区二区三区四区五区 | 男人的天堂网在线 | 日本欧美一区二区 | 天天色影综合网 | 午夜精品在线播放 | 欧美77777 | 成人黄色在线免费观看 | 亚洲欧美在线视频免费 | 国产精品久久久av | 欧美色图小说 | 亚洲女同在线 | 色超碰| 国产老女人乱淫免费可以 | 亚洲熟妇毛茸茸 | 日日夜夜国产精品 | 日韩av在线看 | 国产网站免费观看 | 亚洲色图国产 | 久久性av | 国产午夜伦鲁鲁 | 精品视频免费播放 | 丰满人妻在公车被猛烈进入电影 | 国产成人久久精品麻豆二区 | 日本欧美国产一区二区三区 | 97超级碰碰 | 美女午夜影院 | 国产欧美综合一区二区三区 | 亚洲一区二区免费电影 | 亚洲第一成人网站 | 91色精品 | 91亚洲视频| 欧洲a级片 | 五月丁香啪啪 | 欧美老肥妇做.爰bbww视频 | 中文字幕3 | 毛片在线播放视频 | 日韩一二三区在线观看 | 美女av网址| 国产精品一色哟哟哟 | 夜夜导航 | 午夜久久久 | 99久久精品免费看国产免费软件 | 美女午夜影院 | 岛国av一区 | 国产一区二区三区在线 | 欧美大片18 | 黄色免费网站在线观看 | 色姐| 中文字幕日韩三级片 | 色综合天天色综合 | 成人18视频| 性色av一区二区三区四区 |