1. 假設過程p(呼叫者)呼叫過程q(被呼叫者),則q的引數放在p的棧幀中。
2. 另外,當p呼叫q時,p中的返回位址被壓入棧中,形成p的棧幀的末尾。
3. 返回位址就是當程式從q返回時應該繼續執行的地方。
程式暫存器組是唯一能夠被所有過程共享的資源。
雖然在給定時刻只能有乙個過程是活動的,但是我們必須保證當乙個過程呼叫另乙個過程時,
被呼叫者不會覆蓋某個呼叫者稍後會使用的暫存器的值。
根據慣例,暫存器 %eax、%edx、%ecx 被劃分為 呼叫者儲存 暫存器。
當過程p呼叫q時,q可以覆蓋這些暫存器,而不會破壞任何p所需要的資料。
另一方面,暫存器 %ebx、%esi、%edi 被劃分為 被呼叫者儲存 暫存器。
深入理解計算機系統 第三章大略和第五章大略
這2章總結的很少,主要是覺得沒那麼重要。1.1 2個運算元的指令,第二個運算元通常是目的運算元 movb a b,move a to b,而add a b,b a,指令分為指令類,如mov類 movb,movw,movl,b指乙個位元組,w表示2個位元組,l表示4個位元組 movs類 擴充套件填符號...
深入理解計算機系統 第三章 程式的機器級表示 2
迴圈 do while迴圈 dobody statement while test expr 這個迴圈的效果就是重複執行body statement,對於test expr求值,如果求值的結果為非零,就繼續迴圈。可以看到,body statement至少會執行一次。while迴圈 while tes...
深入理解計算機系統 第三版 第三章家庭作業答案
這章有的地方看第一遍的時候看的雲裡霧裡,看第二遍的時候才看明白。印象較深的是被呼叫者儲存暫存器,這部分內容看的得有3遍,沒看懂之前一直很迷,看懂之後只有兩個感覺 一是妙,二是簡單。這章內容,讓我知道了c語言的 是如何在機器上執行的,在此過程中,我突然很好奇編譯器如何把c原始碼翻譯為組合語言,以及如何...