乙個函式分成3個部分:函式序(prologue)、函式體(body)和函式跋(epilogue)。函式序用於執行函式啟動需要的一些工作,如為區域性變數保留堆疊中的記憶體。函式體是用於執行有用工作的地方。函式跋用於在函式即將返回之前清理堆疊。
當程式增長後的容量超過了記憶體的數量時,它就無法執行,因此它就屬於「太大」。即使在一些現代的機器上,乙個必須儲存於rom(通常用於儲存那些在計算機上控制一些裝置的程式)的程式必須相當小才有可能裝入到有限的記憶體空間中。
但許多現代的計算機系統在這方面的限制大不如前,這是因為它們提供了虛擬記憶體。虛擬記憶體是由作業系統實現的,它在需要時把程式的活動部分放入記憶體並把不活動的部分複製到磁碟中,這樣就允許系統執行大型程式。
但程式越大,需要進行的複製就越多。所以大型程式不是像以前那樣根本無法執行,而是隨著程式的增大,它的執行效率逐漸降低。
現代的經過優化的編譯器在從乙個c程式產生高效的目標**方面做得非常好。因此,你把時間花在對**進行一些小的修改以便使它效率更高常常並不划算。
如果乙個程式太大或太慢,較之鑽研每個變數,看看把它們宣告為register能不能提高效率,選擇一種效率更高的演算法或資料結構往往效果要滿意得多。
如果乙個程式太大,你很容易想到從**著手可以使程式變得更小:最大的函式和資料結構。但如果乙個程式太慢,你該從何處著手提高它的速度呢,答案是對程式進行效能評測。簡單的說是測算程式的每個部分在執行時所花費的時間。花費時間最多的那部分程式顯然是優化目標。程式中使用最頻繁的那部分**的執行速度如果能更快一些,將能夠大大提高程式的整體執行速度。
提高程式效率的最好方法是為它選擇一種更好的演算法。接下來一種提高程式執行速度的最佳手段是對程式進行效能評測。
學習機器的執行時環境也存在危害,如果程式中存在依賴於這方面知識的東西,可能會損害程式的可移植性。
是鏈結器而不是編譯器決定外部識別符號的最大長度。
無法鏈結由不同編譯器產生的程式。
C和指標 學習筆記 第18章 執行時環境
第一步驟是從你的編譯器獲得乙個組合語言 列表。1 測試程式 2 靜態變數和初始化 3 堆疊幀 乙個函式分成三個部分 函式序 函式體 函式跋。4 暫存器變數 5 外部識別符號的長度 6 判斷堆疊幀布局 執行時堆疊儲存了每個函式執行時所需要的資料,包括它的自動變數和返回位址。a.傳遞函式引數 b.函式序...
執行時環境筆記
編譯原理與實踐 第七章 名詞 活動記錄 activation record 包括引數,狀態資訊,local data,臨時資料 stack frames 儲存在stack上的ar frame pointer 專門用於指向ar的暫存器 argument pointer ap 專門用於指向ar中引數部分...
第二章 專案執行時環境 0310
一 組織執行環境 1.事業環境因素 制約因素,需要遵守,制約 2.組織過程資產 指導材料,可以利用,主動參與,作為參考 包括 過程,政策,和程式 組織知識庫 3.組織系統 包括 治理框架 規則,政策,關係等 治理與管理的區別 治理具有巨集觀,穩定性 管理具有具體,靈活性。管理要素 支付合理的薪酬,統...