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運行結果
問題:是由于csapp.c 未被導入導致的。將cssap.c和csapp.h導入到了include文件夾和lib文件夾下。將csapp.c導入客戶端和服務器的代碼所在的文件夾下,將csapp.c一起編譯就可以了。
課下測試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沒有相應的乘除法操作,要轉換成加減或者與,抑或運算完成,為方便起見,規定的數據不討論符號,對于乘除法操作,以最優解替換
轉載于:https://www.cnblogs.com/hxl681207/p/7988824.html
總結
以上是生活随笔為你收集整理的2017-2018-1 20155336 《信息安全系统设计基础》第八周课堂测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何扩展 Azure 资源组中虚拟机的
- 下一篇: Ex 2_5 求解递推式..._第三次作