回覆列表
  • 1 # 使用者3245579998181

    CPU的狀態是指CPU中各個暫存器和Flag的值。其中就包括程式計數器(PC)和棧指標(SP)。其餘的狀態儲存在記憶體裡。

    編譯是指將原始碼編譯成目標指令集的目標碼的過程。編譯過程中執行的程式是編譯器,而非Hello Word程式,Hello Word程式只是編譯器的資料。

    將目標碼連結必要的庫後形成可執行檔案,然後執行該檔案才會執行這個程式。

    一段指令序列一般都是順序執行的,取指令後,PC=PC+N,就會指向下一條指令。當遇到跳轉指令時,會修改PC暫存器的值。

    函式呼叫是一種特殊的跳轉,除了PC進行跳轉和跳回,還需要把引數和返回值來回傳遞,這就是透過棧或暫存器傳參,透過棧的話,先將引數壓進棧,然後把返回地址壓進棧,然後跳轉到函式的指令位置,被呼叫函式需要從棧中彈出引數,運算後,從棧中彈出返回地址,把返回值壓入棧,然後返回。返回後會從棧中彈出返回值使用。

    程序是一種更復雜的過程,透過時鐘中斷處理程式,完成多個程式分時使用處理器和記憶體。

    核心態和使用者態涉及CPU許可權保護,作業系統作為計算機管家,不能被應用程式的錯誤和故意所破壞,所以有不同的記憶體空間,操作核心記憶體需要透過系統呼叫陷入核心態進行處理,然後處理完再變成使用者態。

    libc中的printf是對write系統呼叫的封裝。

    建議閱讀CSAPP和作業系統教科書,學習處理器,中斷,程序相關章節

  • 中秋節和大豐收的關聯?
  • 傅雷家書1955年摘抄賞析?