Sunday, December 09, 2007

Nasm 2.0 Release

Nasm 2.0 在11/30 Release 了, 其實11月以來就一直可以看到最後修正的CVS一直上傳, 我是大概知道更新了什麼,不過怪的事nasm網頁老是不寫出Changelog, 總是覺的很怪, 不過這一天再看alt.lang.asm上看到Frank 咧出changelog 了, 所以記錄一下吧.

FWIW, here's the full "CHANGES" for 2.00 (thanks Chuck!):

2.00
----
* Added c99 data-type compliance.
* Added general x86-64 support.
* Added win64 (x86-64 COFF) output format.
* Added __BITS__ standard macro.
* Renamed the elf output format to elf32 for clarity.
* Added elf64 and macho (MacOS X) output formats.
* Added Numeric constants in DQ directive.
* Added oword, do and reso pseudo operands.
* Added 8-bit floating-point format.
* Correct the generation of floating-point constants.
* Added Floating-point option control.
* Added Infinity and NaN floating point support.
* Added ELF Symbol Visibility support.
* Added Setting OSABI value in ELF header directive.
* Added Generate Makefile Dependencies option.
* Added Unlimited Optimization Passes option.
* Added %IFN and %ELIFN support.
* Added Logical Negation Operator.
* Enhanced Stack Relative Preprocessor Directives.
* Enhanced ELF Debug Formats.
* Enhanced Send Errors to a File option.
* Added SSSE3, SSE4.1, SSE4.2, SSE5 support.
* Added a large number of additional instructions.
* Significant performance improvements.

Best,
Frank

最主要的改進應該算是x86-64的加入吧, 這樣正是yasm興起的主因, 而我比較在意的SSSE3到SSE5 全面補齊, 不過以目前來看,明年初的45nm 的CPU release 只有到SSE4.1 而已, SSE4.2 與SSE5 支援的感覺上有點是刻意補齊功能與yasm對抗


Nasm 2.0 下載

WinCVS 2.x 快速進階 (十) Tag(全域標註)

Tag 這個字還真是不知道要怎麼翻譯, 一直在思考可以適切並易於了解的中文, 所以暫定如此, 希望不會造成行家的困惑

CVS 是以檔案為基準的版本編號系統, 如圖中可以看出隨著程式的持續更新, 不一定每一次都會修改所有的檔案, 所以會出現檔案版本不同的情況, 所以當我們整個程式的版本後, 需要反查時, 會出現無法追朔所發行過版本的詳細在CVS 上每個檔案的版本, 所以CVS 利用Tag 來解決這個問題

圖中因為要整個目錄都要標示全域標註, 所以我直接選擇目錄,然後選擇紅色框的T字樣的圖樣以加入全域標註(綠色的為移除Tag), 點如後出現設定頁

我以圖內所標示數字的部份做說明

1. new Tag name : 輸入TAG的名字, 最好不要中文, 而且不能用'-', 所以我都以'_'底線來做為版本中'.'點的功能, 在這個例子我輸入了Build_1_2_0_0

2. 點入後, WinCVS會掃描整個CVS中的TAG, 可以方便輸入, 這部份常用於移動TAG 的時候

3. Do not recurse into sub-direcoties : 如果選取此設定,將不會設定這個目錄中的所有子目錄裡的檔案為此TAG

4. Allow move/delete of branch tag (not recommended) : 這個選項是允許覆蓋或刪除branch(分歧)的標註, 這個部份我會再接下來的文章裡說明,CVS 使用相同介面處裡 Branch 與 Tag, 但是Branch 只要一誤用, 影響的將是整個分岐出來的部份, 所以WinCVS善意的在後面提醒"不建議使用", 我通常不勾選, 這樣一來當我將TAG取名與branch 同名是,就不會出現誤蓋

5.Check that the files are unmodified before tagging : 這個選項建議勾選, 他可以檢查是否有被修改(modified)過的檔案被執行Tag, 因為如果被Tag, 將會是這個被修改的檔案最後的版本編號, 例如Filea.cpp 檔案編號為 1.4, 但我已經修改這個檔案了, 但確沒有commite(這時WinCVS會以紅色標示), 當我加Tag時則會為1.4 而不是commit這個修改後的1.5, 所以在執行前檢查, 就可以確保自己想要Tag的是修改前的1.4 or修改後的 1.5

6. Overwrite existing tags with the same name : 是否覆蓋舊的同名TAG, 如果勾選則覆蓋, 通常我是不勾選此功能, 主要是希望能自動確定我所要設定的版本之前沒有設為, 例如我想要設Build_1_2_0_0,但是這之前設過了, 如果沒有勾選此功能,則會停止Tag, 並提示錯誤, 但是如果是要搬移Tag 時, 我就會這樣勾選, 以確定將舊有的TAG 中記錄的檔案編號更新

在確定之後, 我們可以看到所有檔案都Tag 了

那要如何取出這個TAG 的檔案呢?, 當然利用update 摟

圖中黃色框的地方勾選後, 輸入所欲讀取的TAG, 我們輸入剛才加入的Build_1_2_0_0, 確定之後

WinCVS 的檔案窗裡可以看到tag 這欄為Build_1_2_0_0, 我們已經成功取出Build_1_2_0_0 這個TAG 的檔案了