[問題] start.s在Nachos下的作用

看板C_and_CPP作者 (笑面男)時間6年前 (2018/08/21 12:39), 編輯推噓1(107)
留言8則, 3人參與, 6年前最新討論串1/3 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...) Ubuntu14.04 32bit 問題(Question): 小弟我雖然不是資工系畢業的,但對作業系統有點興趣,所以在清大開放式課程找到一門 周志遠教授開的作業系統,裡面的作業是用Nachos(我使用的是用c++寫的)。有一個作業 是要自己加system call,網路上其實都找得到教學,但小弟的疑問是: 看起來中斷發生的handler是寫在-/code/userprog/exception.cc裡的ExceptionHandler 這支function中的SyscallException的switch裡。所以只要再多加一個case就可以處理 新的system call,實作部分就寫在該寫的地方就好。但問題來了,其實還要在 -/code/test/start.s裡多加類似底下的程式碼, .globl Print .ent Print Print: addiu $2, $0, SC_Print syscall j $31 .end Print 這段看起來是MIPS的組語,我也了解意思,不過system call不是已經用c++實作了嗎? 加這段組語的意思是甚麼呢? 我有看一下-/code/test裡的makefile,看起來其他的test file都會用到start.o,而 這個start.o就是由MIPS組譯器將start.s組譯後得來的(?),這中間的邏輯其實我不是 很懂,有沒有修過作業系統的高手可以解釋一下,感謝各位撥空看小弟的問題。 -- 一個人一直以來孤獨地生活最大的壞處在於: 當你憶起過去時,無法肯定的說出自己的過往, 記憶已遭到竄改、扭曲,以符合現在的需求(我們也可以說這是好處)。 你就像一個警探在詢問犯人,唯一的線索就是犯人的證詞, 你無法確定他說的是不是實話,也無從考證, 因為沒有目擊者! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.59.250 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1534855187.A.0F2.html

08/21 21:18, 6年前 , 1F
基本的CRT
08/21 21:18, 1F

08/21 21:20, 6年前 , 2F
你平常寫c的main實際上compiler 會自動幫你放這種程式
08/21 21:20, 2F

08/21 21:20, 6年前 , 3F
設定你的main為entry point
08/21 21:20, 3F

08/21 23:48, 6年前 , 4F
我有看到註解寫說因為不希望把c library放進來,所以
08/21 23:48, 4F

08/21 23:49, 6年前 , 5F
start.s是放自己實作c library(CRT?)的entry point?
08/21 23:49, 5F

08/21 23:50, 6年前 , 6F
那如果不管Nachos,我有辦法自己寫自己的CRT嗎?
08/21 23:50, 6F

08/22 01:12, 6年前 , 7F
上面講錯了, 除了檔名叫 start外, 從你貼的code就只是
08/22 01:12, 7F

08/22 01:13, 6年前 , 8F
Print syscall wrapper, 跟 CRT 沒什麼關係
08/22 01:13, 8F
文章代碼(AID): #1RV0WJ3o (C_and_CPP)
文章代碼(AID): #1RV0WJ3o (C_and_CPP)