ProgrammingLanguage
摘要: 環境 Ubuntu12.04 + openJDK6。
JNI中使用“修改的UTF8”編碼,而Linux下wchar_t使用UTF32,注意轉碼。
閱讀全文
摘要: 結論: C 語言的 printf 使用 %f 來輸出 float 時,實際上先把 4字節的float轉化為 8字節的double,然后訪問了棧上的 8字節數據。
(環境:Ubuntu12.04 32位 intel i3 nasm gcc)
閱讀全文
摘要: 最近在寫Pascal編譯器,生成 nasm 匯編代碼,需要調用 nasm 進行匯編,再調用 gcc 與 C 語言標準庫鏈接,從而可以使用 C 語言的庫函數。
注意 "-o" 和 fileName 要分開為兩個字符串,不然的話,nasm 沒問題,但 gcc 會出錯,鏈接器找不到輸出文件。
errReader 和 errInfo 用于輸出 nasm 和 gcc 輸出的錯誤信息。
閱讀全文
摘要: 主要增加了圖形和事件驅動,以及其它一些特性。。。
閱讀全文
摘要: 看歸看了,但習題沒做,學習效果打了折扣。。。
閱讀全文
摘要: 最近的幾個月,我一直在學習一種叫Haskell的編程語言。由于里面有太多的從未遇到的編程概念,整個過程就像是完全重新學習如何編程。在i.TV網站上,我寫了很多JavaScript(node.js和前端代碼)。雖然有不少的函數式/haskell式的編程模式不能引用進來,但仍有大量的技術思想讓我在使用javascript編程語言時受益不少。
你會發現Haskell庫里有能夠處理各種事情的各種各樣的函數。起初我以為這些只是一種技術上的積累,但隨后我認識到,這些函數相比起其它語言里的函數,它們能應用到形式更廣泛的問題中。這使得它們更有價值,因為我們都不太喜歡對一些常見的問題還不得不自己去寫解決方案。。。
閱讀全文
摘要: 一日,你查看你的程序代碼,你有兩大塊代碼看起來幾乎完全的一樣。事實上它們就是完全一樣,除了一個代碼里說的是“Spaghetti(意大利面條)”,另一個代碼里說的是“Chocolate Moose(巧克力慕絲)”。。。
閱讀全文
摘要: gc即垃圾收集機制是指jvm用于釋放那些不再使用的對象所占用的內存。java語言并不要求jvm有gc,也沒有規定gc如何工作。不過常用的jvm都有gc,而且大多數gc都使用類似的算法管理內存和執行收集操作。
在充分理解了垃圾收集算法和執行過程后,才能有效的優化它的性能。有些垃圾收集專用于特殊的應用程序。比如,實時應用程序主要是為了避免垃圾收集中斷,而大多數OLTP應用程序則注重整體效率。理解了應用程序的工作負荷和jvm支持的垃圾收集算法,便可以進行優化配置垃圾收集器。
垃圾收集的目的在于清除不再使用的對象。gc通過確定對象是否被活動對象引用來確定是否收集該對象。gc首先要判斷該對象是否是時候可以收集。。。
閱讀全文
摘要: Java 語言可能是使用最廣泛的依賴于垃圾收集的編程語言,但是它并不是第一個。垃圾收集已經成為了包括 Lisp、Smalltalk、Eiffel、Haskell、ML、Scheme和 Modula-3 在內的許多編程語言的一個集成部分,并且從 20 世紀 60 年代早期就開始使用了。在 Java 理論與實踐的本篇文章中,Brian Goetz 描述了垃圾收集最常用的技術。在以后的幾個月,他將分析 1.4 JVM 所使用的垃圾收集策略、不同垃圾收集策略對性能的影響和如何才能(以及如何 不能)幫助垃圾收集器取得更好的性能。。。
閱讀全文
摘要: .
1.1 編寫一個匯編程序mixop.s
– 實現函數 y=mixop(x1,x2,x3)
– y=x1+x2*x3
– 調用c2.c中的multiply函數
1.2 C程序1:c1.c
– 實現函數 void init();
– 作為啟動時的起始地址
– 在該函數內要調用mixop函數完成6+40*50,結果存放在變量y中。
1.3 C程序2:c2.c
– 實現函數y=multiply(x1,x2)
– y=x1*x2 。。。
閱讀全文
摘要: 解析器是parser,而解釋器是interpreter。兩者不是同一樣東西,不應該混用。
前者是編譯器/解釋器的重要組成部分,也可以用在IDE之類的地方;其主要作用是進行語法分析,提取出句子的結構。廣義來說輸入一般是程序的源碼,輸出一般是語法樹(syntax tree,也叫parse tree等)或抽象語法樹(abstract syntax tree,AST)。進一步剝開來,廣義的解析器里一般會有掃描器(scanner,也叫tokenizer或者lexical analyzer,詞法分析器),以及狹義的解析器(parser,也叫syntax analyzer,語法分析器)。掃描器的輸入一般是文本,經過詞法分析,輸出是將文本切割為單詞的流。狹義的解析器輸入是單詞的流,經過語法分析,輸出是語法樹或者精簡過的AST。
(在一些編譯器/解釋器中,解析也可能與后續的語義分析、代碼生成或解釋執行等步驟融合在一起,不一定真的會構造出完整的語法樹。但概念上說解析器就是用來抽取句子結構用的,而語法樹就是表示句子結構的方式。。。
閱讀全文
摘要: 在一個允許在堆上動態分配內存空間并且采取隱式內存釋放的程序設計語言里,如何確保內存的正確釋放不再是程序員的關注點,而由運行時環境來提供支持。無法被程序引用的在堆上已分配的內存空間成為垃圾(無用內存單元)。。。
閱讀全文
摘要: 重點探討一下動靜態編程語言的語義,兼帶些DSL及通用語言,以及新手上手難易問題。。。
閱讀全文
摘要: 有人提到如果 if 這樣的關鍵字都可以定義成中文,那就是真正的中文編程。那時我就想到,這個其實要在 scheme 中實現是多么簡單,將 sicp 書中的解釋器稍微修改下就可以了,只要修改解析的部分即可。解釋器的完整代碼放后面。。。
閱讀全文
摘要: qsort 其實不認識數據類型的。。。
閱讀全文
摘要: 冒昧求指教:
I64 拆開為 高32位為I32,低32位為U32,怎么拆?
反過來,怎么組裝?
閱讀全文
摘要: 源文章來自前C++標準委員會的。。。
閱讀全文
摘要: 也是剛剛從郵箱里發現的古董。。。
閱讀全文