LUA原始碼分析一 總括

2021-08-31 08:25:12 字數 1085 閱讀 9787

1.lua語言短小,而且是我目前開發用到的語言之一,我會把它作為長期閱讀的乙個開源**之一

2.讀完並不代表很牛了,只是把自己的一些弱點給彌補得不是那麼明顯

3.格式上會大概如下:

1)引用一段**時,會把大意通過注釋標識出來,如果遇到具體的函式呼叫會通過1.x表示在後面標記段

2)有時候一遍下來,會有選擇性的通讀,很可能以後會回過頭再次閱讀,會加個時間戳表示更新

3)根據2)的讀法是,不從細節的演算法出推導邏輯,而是先認識這個東西是幹嗎的,再去推導其中的細節。否則會迷失在無盡的細節中

4)前幾篇中,我會把每個函式背後所對應的c檔名列舉出來,通過觀察這些檔案的層次,學習lua優秀的模組劃分,和對lua全域性上的認識

4.閱讀原始碼上,我的一些體會,大概分這幾個步驟

1)乙個好的庫會很清晰分這麼幾個層次,外部api,內部api,自定義的資料格式和解析,核心的資料結構,核心的幾個模組,以及工作流程

2)因此閱讀上可以這樣,通過跟調一些外部api的實現,來了解這個庫的乙個工作方式

3)熟悉這個庫的 資料結構,和常用的資料解析巨集或者函式

4)可以嘗試分析一些內部api的實現(多為實現外部api的函式), 3),4)可以多次迭代

5)這個時候是跟調這個庫的工作流程。

6)以庫工作流程為例,如果是lvm的虛擬機器,那就要先了解它的一些狀態檔案,棧的操作方式,

7)如果6)用到一些核心的資料結構,則回頭再看這些資料結構,然後再從5)開始迭代

總結一下,即先了解乙個東西暴露出來的api,從這些上層api上去大致揣摩庫的工作方式,然後熟悉"通行證"(資料結構,常用的巨集),然後繼續下一層的探索,有時候需要兩個層次的結合來看,不但迭代的這麼個過程。其中很重要的乙個是,怎麼去領會乙個庫的思考方式和組織關係,有了這個大背景的存在,就不會迷失在看似繁多的**檔案裡。

5.環境上的準備

lua版本是(根據lua.h的巨集)

#define lua_version "lua 5.1"

#define lua_release "lua 5.1.4"

編譯器是vs2008, win7版本

把原始碼都加進vs工程,刪掉一些提示重複main的檔案,保證**上的可跟調性

區塊鏈學習筆記(一) 總括

p.s 以下內容來自對於知乎問答 區塊鏈是什麼,如何簡單易懂地介紹區塊鏈?使用者回答的整理 區塊鏈本質上是乙個去中心化的分布式賬本資料庫。其本身是一串使用密碼學相關聯所產生的資料塊,每乙個資料塊中包含了多次位元幣網路交易有效確認的資訊。去中心化是區塊鏈技術的顛覆性特點,它無需中心化 實現了一種點對點...

Lua 原始碼分析 lprefix h

lua 原始碼裡面很小的乙個標頭檔案,沒什麼東西,會預先進行一些設定,每個 c 檔案都會引用.ifndef lprefix h define lprefix h posix xsi if defined lua use c89 有關移植性 if defined xopen source define...

Lua 簡單Lua直譯器原始碼分析

include include include lua.h include lauxlib.h include lualib.h int main void lua close l return 0 lua.h定義了lua提供的基礎函式,包括建立lua環境 呼叫lua函式,它的定義是以lua 開頭的...