這章有的地方看第一遍的時候看的雲裡霧裡,看第二遍的時候才看明白。
印象較深的是被呼叫者儲存暫存器,這部分內容看的得有3遍,沒看懂之前一直很迷,看懂之後只有兩個感覺:一是妙,二是簡單。
這章內容,讓我知道了c語言的**是如何在機器上執行的,在此過程中,我突然很好奇編譯器如何把c原始碼翻譯為組合語言,以及如何做各種優化,真的太強了。
下面的內容只有**部分:
3.58
long
decode
(long x,
long y,
long z)
3.61
long
created_alt
(long
*xp)
3.63
#include
using
namespace std;
long
switch_prob
(long x,
long n)
return reslut;
}int
main()
3.71
#include
#include
#define buf_size 10
void
get_echo()
return;}
intmain()
3.73
find_range:
vxorps %xmm1,
%xmm1,
%xmm1
vucomiss %xmm0,
%xmm1
ja .neg
jb .pos
je .zero
movl $3
,%eax
.zero
movl $1
,%eax
ret.neg
movl $0
,%eax
ret.pos
movl $2
,%eax
ret
3.74
find_range:
vxorps %xmm1,
%xmm1,
%xmm1
vucomiss %xmm0,
%xmm1
cmova $0
,%eax
cmove $1
,%eax
cmovb $2
,%eax
cmovp $3
,%eax
rep;ret
深入理解計算機系統 第三章
1.假設過程p 呼叫者 呼叫過程q 被呼叫者 則q的引數放在p的棧幀中。2.另外,當p呼叫q時,p中的返回位址被壓入棧中,形成p的棧幀的末尾。3.返回位址就是當程式從q返回時應該繼續執行的地方。程式暫存器組是唯一能夠被所有過程共享的資源。雖然在給定時刻只能有乙個過程是活動的,但是我們必須保證當乙個過...
《深入理解計算機系統(第三版)》第一章
1 計算機提供不同層次的抽象表示,來隱藏實際實現的複雜性 2 程式設計師必須知道編譯系統是如何工作的原因 3 執行hello程式 4 併發是乙個通用的概念,指乙個同時具有多個活動的系統 並行指的是用併發使乙個系統執行的更快 5 意識到快取記憶體的存在,可以利用快取記憶體將程式的效能提高乙個數量級。執...
速讀《深入理解計算機系統(第三版)》問題及解決
p13 使用者棧和執行時堆有什麼區別?資料結構中經常說堆疊,這裡的堆和棧一樣嗎?和作業系統的堆 棧有什麼區別?參考 堆和棧的區別 記憶體和資料結構 作業系統 p31 c格式化指令 2x 表明整數必須用至少兩個數字的十六進製制格式輸出。之前學過 7.2f 點後的2指的是小數點後兩位,那麼 2x 中的點...