ruby0.49 regex.c原始碼分析
網上買個日本人的二手顯示器,保護眼睛吧。安裝好顯示器就開始讀原始碼。
看regex.c,因為可以單獨進行測試,先加上幾句:
#define test 1
#include
#include
進行編譯時,報錯,說xmalloc,xrealloc等函式找不到,網上也找不到資料,後來,記起在awk還是sed的原始碼中,是可以編譯成功的。具體如何改的忘記了。
一狠心,不管三七二十一了,先把xmalloc中的x去掉,改為malloc,然後再編譯,果然少了錯誤,同樣再改xrealloc。
編譯完了,就讀main函式,其實,這個函式也寫得頭痛。
不過,因為編譯時,雖然報了不少警告,但好歹生成了可執行檔案,於是把可執行檔案先執行一次。
gcc regex.c -o my_regex
./my_regex
嘗試輸入,分析輸出結果。讀起來就有效多了。
作者先把正規表示式進行編譯,結果儲存起來,再進行優化編譯,用優化後的結果去進行匹配。
後面來有個可以列印編譯結果的函式,也進行了呼叫。
print_buf(buf)
加起來後,就錯誤很多了,再把錯誤改掉,再執行,居然報記憶體段錯誤。仔細分析,發現原來,print_buf的函式是個指標,但在main()函式中,buf不是指標,於是取位址,呼叫時,改為:
print_buf(&buf)
哈哈,就能執行成功了。真爽。
不過,列印了出buf一堆結果,一堆數字,不太好看。
ruby 0 49原始碼分析
今天想想,讀讀ruby0.49的原始碼。用c寫東西,那是太慢了。真要幹活,還是用perl或者ruby.現在時間充足,就相看看ruby0.49。收到了王亞剛寫的gcc原始碼分析的書,他的版本太高,感覺還是讀最古老的版本較划算。量太大了,這何年何月才能看完呢。wget tar zxvf ruby 0.4...
ruby0 49原始碼分析 array c
ruby0.49原始碼分析 array.c 今天讀ruby0.49,感覺讀 的速度越來越快了。大腦好象開竅了。先讀makefile,根據基編譯順序,從下向上讀。在array.c的上面定義了若干函式,在末尾把函式進行註冊。檔案末尾 有init string 函式 用rb define method 函...
ruby0 49原始碼分析2
ruby0.49原始碼分析2 週末重新打造讀程式的環境。在臥室裡布置了兩台電腦,每台筆記本加個顯示器。一台專門用於讀 另一台,專門用於寫測試程式,並把上網功能去掉。最大限度的保持專注。因為ruby中定義了資料結構,把資料結構的定義抄下來,然後貼在牆面上,就象警察破案一下,準備乙個大的工作板。發現證據...