第三章 過程

2021-10-14 11:21:07 字數 822 閱讀 2565

過程的呼叫底層實現上是用棧結構,當過程p呼叫過程q時,我們先將p入棧,再將q入棧,q執行結束之後將q出棧,然後在將p出棧。呼叫不同的過程,實質上修改的是程式計數器(pc,從高位址向低位址增長)的值,從底層彙編上看,採用的是call命令。

當過程p呼叫過程q,q執行結束之後如何繼續執行p之後的機器指令,我們稱之為轉移控制。實現原理是在p執行call彙編呼叫q時候,我們首先將call指令的下一條指令入棧,也就是圖中的返回位址。當q執行結束之後我們就可以將返回位址彈出,繼續執行call的下一條指令 

在過程呼叫的過程中,必然涉及到的乙個操作是引數的傳遞我們稱之為資料傳送,在底層實現中,我們採用暫存器的方式進行引數的傳遞。當傳送的引數n<6時,我們將引數1-6分別複製到對應的暫存器中,當n>6時,我們將7-n的引數壓入棧中,引數到位之後,程式就能執行call指令呼叫過程q,新的過程q可以通過讀取暫存器來讀取引數。我們又是如何讀取棧中的引數呢?按照規定,在棧中的引數必須是8的整數倍對齊,這樣我們就使得每乙個引數對應於棧中的一行,我們通過對棧頂指標sp+8,sp+16來分別讀取不同位址中的不同引數

當p呼叫q時,如何保證q執行結束暫存器中還是p的內容呢?我們在p呼叫q的時候,q會將此刻p各個暫存器中的值存起來,當返回p時,我們再將存起來的值寫入暫存器

第三章 軟體過程模型

1.簡述軟體過程 軟體生存週期 軟體過程模型 軟體生存週期模型 三者之間的概念區別。2 軟體生存週期 軟體也有乙個從生到死的過程,這個過程一般稱之為軟體的軟體生存週期或生命週期。3 軟體過程模型 乙個包括軟體產品開發 執行和維護中有關過程 活動和任務的框架,覆蓋了從系統的需求定義到系統的使用終止。2...

第三章 堆疊

1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...

第三章 曙光

第三章 曙光 第二場校園招聘開始了。其實,洋對這個公司的不是很了解。因為前幾天突然在bbs上面看到了這個公司的招聘資訊,洋覺得這個公司不錯,就上網投了簡歷。接下來的乙個多小時,讓洋很震撼!想不到這個公司這個厲害,而且無論從哪方面來說,絕對不比之前的那個公司差。想不到自己的乙個不經意的決定到了這個大的...