南大計算機系統基礎實驗 ics2020,pa0

2021-10-12 16:52:03 字數 3052 閱讀 2344

**3.總結**

tmux使用方法:

vim學習遊戲:

linux教程:

linux26個命令:

man入門教程:

gdb入門教程:

作為乙個對linux幾乎沒有接觸的人來說,這一部分完成需要花費的時間比較多,對於官方給出的手冊盡量一步一步完成,不要跳過,不然後面還要掉過頭來學。

官方推薦在真機上安裝debain,作為乙個linux菜鳥,沒有勇氣嘗試,我選擇了vmware workstation和ubuntu20.04。建議可以選擇版本稍微低一些的ubuntu版本,如ubuntu18.04。因為20.04這個版本比較大,對效能要求高一些,開始分配了2gb的記憶體和20gb的虛擬硬碟,有些卡頓。

官方文件在getting source code for pas這一步中,提到了ubuntu18.04可能會遇到的kvm編譯錯誤並給出了解決方案。

在我的ubuntu20.04系統中也遇到了這一問題,在嘗試了官方給出的解決方法後,問題仍然存在。

錯誤提示如下:

building x86-nemu-interpreter

makefile:51: *** invalid diff. supported: qemu kvm nemu. stop.

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-eufjiedi-1608691935150)(/img/bvcl6dj)]

根據給出的錯誤提示資訊,檢視makefile檔案51的內容發現,發現是因為乙個else條件中丟擲了乙個錯誤。

37

ifeq($

(diff

),qemu)

38diff_ref_path=$

(nemu_home

)/tools/qemu-diff

39diff_ref_so=$

(diff_ref_path

)/build/$(

isa)

-qemu-so

40cflags+=-

d__diff_ref_qemu__

41else

ifeq($

(diff

),kvm)

42diff_ref_path=$

(nemu_home

)/tools/kvm-diff

43diff_ref_so=$

(diff_ref_path

)/build/$(

isa)

-kvm-so

44cflags+=-

d__diff_ref_kvm__

45else

ifeq($

(diff

),nemu)

46diff_ref_path=$

(nemu_home)47

diff_ref_so=$

(diff_ref_path

)/build/$(

isa)

-nemu-interpreter-so

48cflags+=-

d__diff_ref_nemu__

49mkflags

=isa=$

(isa

)share=1

engine

=interpreter

50else51$

(error invalid diff

. supported: qemu kvm nemu)

52 endif

再通過檢視之前的**,發現ifeq($(diff),qemu)中的條件總會成立,因此後面的else if和else應該沒有必要,所以就簡單粗暴,將後面的else if 和else都注釋掉。。

修改如下:

37 #ifeq($

(diff

),qemu)

38diff_ref_path=$

(nemu_home

)/tools/qemu-diff

39diff_ref_so=$

(diff_ref_path

)/build/$(

isa)

-qemu-so

40cflags+=-

d__diff_ref_qemu__

41 #else

ifeq($

(diff

),kvm)

42 #diff_ref_path=$

(nemu_home

)/tools/kvm-diff

43 #diff_ref_so=$

(diff_ref_path

)/build/$(

isa)

-kvm-so

44 #cflags+=-

d__diff_ref_kvm__

45 #else

ifeq($

(diff

),nemu)

46 #diff_ref_path=$

(nemu_home

)47 #diff_ref_so=$

(diff_ref_path

)/build/$(

isa)

-nemu-interpreter-so

48 #cflags+=-

d__diff_ref_nemu__

49 #mkflags

=isa=$

(isa

)share=1

engine

=interpreter

50 #else

51 #$

(error invalid diff

. supported: qemu kvm nemu)

52 #endif

(1)作為linux菜鳥,這一部分比較費時,但是收穫很多,尤其是熟悉了vim的操作之後,vim編輯器之神的稱號名不虛傳。

(2)stfw,stfm,rtfsc。個人搜尋的能力很重要,讀原始碼的能力也很重要。

西工大計算機系統基礎實驗 計算機系統結構課程教與學

學時數 48學時學分 3授課物件 電腦科學與技術及相關專業本科學生先修課程 計算機組成原理,數字邏輯,作業系統,編譯原理 一 課程的性質和目的 本課程是計算機專業一門重要的專業基礎課。其目的是提高學生從總體結構 系統分析這一層次來研究和分析計算機系統的能力,幫助學生建立整機的概念 使學生掌握計算機系...

計算機系統基礎

includeint main return 0 如果將表示式換成 2147483647 1 2147483647 結果又會怎麼樣呢 編譯器如何處理字面量 高階語言中運算規則 高階語言與指令之間的對應 機器指令的執行過程 機器級資料的表示和運算 sum int a unsigned int len ...

閒談計算機系統 2

1 邏輯計算與處理部分與資料儲存部分互動叫資料庫訪問,有 odbc,bde,jdbc,ado,ado.net,dao.2 系統之間或客戶端與應用伺服器之間的通訊有 http s soap ws,wcf,netremoting,wcf riaservice cobra jrmi.3 幾個人同時要用乙個...