lcc編譯器要分析下面的程式,大體流程是這樣的。
#001 #include
#002
#003 int main(void)
#004
#017
#018 printf(__time__" "__date__"/r/nhello world/n");
#019 return 0;
#020 }
#021
當遇到復合語句第
4行開始時,就進入了復合語句處理,直到第
20行退出來。在復合語句裡,先要把所有區域性變數的宣告分析完成,也就是把第
5行到第
8行的區域性變數儲存到
code::blockbeg
型別的**塊裡,它的符號表就新增到
cp->u.block.locals
裡。當然在分析區域性變數時,就遇到第乙個區域性變數宣告同時還進行初始化的動作,因此又要把**生成塊新增到**表裡,也就是新增
code::gen
**塊。但**塊
code::blockbeg
是先於code::gen
**塊的,因此後面
ntest2
、ntest3、i
等幾個區域性變數宣告,還是新增到
code::blockbeg
**塊裡,這樣就很方便後面計算棧裡分配區域性變數的大小了。接著就會把第
10行到第
19行的**生成
code::gen
塊、code::jump
塊和code::label
塊。 最後在第
20行的復合語句結束時,再生成
code::blockend
**塊。
因而在後端遍歷**表時,就先分析區域性變數的**塊
code::blockbeg
,然後分析
code::gen
、code::jump
塊和code::label
塊,最後分析
code::blockend
**塊。這就是復合語句的**塊流程。
原創 擁抱移動Web2 0系列
url 擁抱移動web2.0時代 url b 內容摘要 b 今年,opera發布了在移動裝置上支援ajax的瀏覽器。考慮到opera在瀏覽器市場的聲望,這個發布宣告確實具有意義重大。不過,我相信這存在一定的豪賭成分。但我相信ajax將替代j2me和xhtml成為開發移動應用的首選平台的機會確實存在。...
Web2 0時代的儲存變革?
發現焦點 我剛剛讀了關於web2.0的一篇文章,online information storage completing the web as platform 該文提出乙個非常有價值的思想,就是作者觀察到,隨著web2.0時代online software的普及,舊有的儲存格局有可能改變。恰巧的...
Web 2 0 時代誰擁有資料
最近 blog 的圈子裡因為 tim o reilly 的一篇 what is web 2.0 而引發了很多討論。看翻譯版可以到 雙葉 總結可以在 keso 處找到.什麼是 web 2.0 其實我不是很關心 倒是文中提到的一段話很有意思 資料庫會是 web 2.0 公司的核心競爭力 我認為有些矛盾的...