Tuesday, March 18, 2014
Visual Studio 的ipch/ 目錄
ipch目錄據說是Visual Studio 2010 IntelliSense 開始拿來放一些precompiled的東西,最賭爛的是,它不是放Compiler 的precompiled 的東西, 所以找很久都朝C++ compiler 的precompiler 的方向找, 拜了幾次Goolge大神才找到, 其實主要是IntelliSense自己的暫存檔, 但這個設定確不是sln 可以設定的, 所以不能夠過設定.sln 來讓所有人都可以用, 得每台電腦都得設定
到這裡來
Tools > Options > Text Editor > C/C++ > Advanced ->Fallback Location
將Always Use Fallback Location設為 True
預設存放的目錄為 C:\users\AppData\Local\Temp\
你也可以透過 Fallback Location 來設定, 例如直接設到 %TEMP% 去眼不見為淨
參考連結
http://blog.bfitz.us/?p=1315
http://stackoverflow.com/questions/4315681/how-to-change-ipch-path-in-visual-studio-2010
http://blogs.msdn.com/b/vcblog/archive/2010/03/09/intellisense-browsing-options-in-vc-2010.aspx
Thursday, February 27, 2014
把多張JPEG 轉成MJPEG 的video file
ffmpeg -r 30 -i input%03d.jpg -codec copy output.avi-r 是frame rate
-i 輸入檔名, 其參數方式跟printf 類似, 如果是 input_001.jpg to input_123.jpg, 那就下成input_%03d.jpg摟
-code copy : 則是直接copy不做壓與解
記得, 輸出檔名為.avi 或mkv ,mov 等容器類的檔案, 而不要設定成mp4 指定格式壓縮格式
參考資料
http://video.stackexchange.com/questions/7903/ffmpeg-how-to-losslessly-encode-many-jpg-images-to-a-video
Thursday, February 20, 2014
git submodule update 後, 不會自動對到master branch 的解法
不過在git 1.8.1 之後加入了可以設定submodule 的branch 了, 使用方式是在加入submodule 時下-b 的參數
git submodule add -b master [URL to Git repo];
這樣當我們 submodule update 時就會自動將branch 設為master , 這樣也比較像svn 的external link 的方式, 可以設定某個root 的git 使用某個submodule 的branch
不過如果現有的submodule 要加入呢?
這時只要回到parent 的git 目錄去設定就可以了
git config -f .gitmodules submodule..branch
參考連結:
ref1: integrate with the tip of the remote branch
ref2: if you have an existing submodule which isn't tracking a branch yet
Wednesday, November 16, 2011
cvs 檔案損毀
昨天 CVS 系統出現ext3 的node錯誤的message ,大驚, 所以盡快換了一顆硬碟, 把檔案覆製好後以為安全了, 結果今天陸續傳回災情, 某些binary 檔案無法用WinCVS log or graph, 出現下面的些log
cvs log -- xxx.dll ( in directory x:\xxx\ )
cvs [log aborted]: premature end of value in /cvs/xxx/xxx.dll,v revision 1.187
搞了老半天, 最後只好把1.187 這個版本直接從 xxx.dll,v 這個檔案裡砍掉, 總算解了這個問題
但又接到幹譙信, 換另一個檔出問題, 再查這次就慘了, 出現下面這個LOG
cvs log -- xxx.dll (in directory x:\xxx\)
cvs [log aborted]: unexpected '\x5e' reading revision number in RCS file /cvs/xxx/xx2.dll,v
沒有地方可以查問題出在哪, google 大神請出來拜了N回了, 還是找不到修復的程式, 有點欲哭無淚, 後來有找到原來cvs 的套件裡已檢查檔案是否損毀的script
一般應該放在這
/usr/share/cvs/contrib/check_cvs
需要先設定CVSROOT
export CVSROOT="/cvs/xxx" <-設成你的CVSROOT
如果想要show多一點information 就再設 CVSDEBUGEDIT 變數
export CVSDEBUGEDIT=1
如果是在windows 下的, 記得把export 改成 setenv
然後執行就可以列出損毀的檔案了..可以檢查災情....
然後.... 然後.. 沒有救檔的程式嗎? 靠夭勒.. 沒有....... 看來又得再一一比對了..!!
如果知道自動修的檔案, 記得通知我一下..!!
Wednesday, March 23, 2011
VC6 在Windows 7 64 bit 下Debug break 後, 所debug 的process 就hang 死的解法
因為Driver 的工作都已經移到 amd64 的工作環境了, 所以開發的OS就直接使用Windows 7 64bit, 測試上也比較容易, 不過AP 大部份還都是用VC6 寫的, 但是在windows 7 64 bit下用VC6 開發最痛苦的就是, 當程式因為某個中斷點break 後, 如果按Shift-F5 離開正在debug的程式時, 這個程式就會hang 住, 用工作管理員也砍不掉
這樣問題就來了, 當你修改完code重新compiler 時, 會無法link成exe, 因為這個exe因為還在執行, 所以是無法寫入的, 然後就得關掉VC6, 這個debug一半的process才會被release, 然後重新開啟VC6 進行compiler , 一整個痛苦
這幾天實在受不了了, 用google了一下, 居然有看到解法, 這個真是感動,
請先確定將VC6 升到SP6, 我已經試過SP5 無法成功, 然後下載這個TLLOC.dll
http://www.dr-hoiby.com/TLLOC.dll
覆蓋原來的 "Common/MSDev98/Bin/TLLOC.dll" 這個檔案, 重開VC6, 就可以解除痛苦了
參考連結
http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/a9914982-ff0f-4981-b1f3-f0c936fec74e
Tuesday, March 22, 2011
在 VC6 SP6 上裝Processor Pack 5 的方式
Visual C++ 6.0 在出了 ServicePack 6 後, 不知道為啥要先remove 掉 Processor Pack 5, 所以當安裝完SP6 後 PP5 就不見蛋了, 如果要重裝PP5就會出現需要先裝SP5的訊息,所以只好讓PP5爽一下了
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\ServicePacks
把latest 的值由6 改為5 裝完PP5 後, 再改回 6吧..
記得如果是在Windows 7 64bit 版本下要改registry 需要執行 C:\Windows\SysWOW64\regedt32.exe 才可以讀的到上述的registry
不過因為就算PP5 也只support 到SSE2, 要改SSE3 以上的inline assambly 除非使用VS2005 以上了, 所以VC6下最好還是改為.asm 後再由外部Assambly 如NASM, YASM來 Assabmly 才是王道了..!!
Tuesday, January 18, 2011
double .dmp 直接開啟windbg進行分析的方法
The -IA parameter must not be used with any other parameters. This command will not actually start WinDbg, although a WinDbg window may appear for a moment.
Thursday, December 09, 2010
VC++ 2010 Express on X64 for MFC app developer
最近x64 上Driver 工作開始收尾要移到x64 App上工作, 用了N年的VC6看來確定無法繼續了, 既然要改開發工具, 所以就直上VC++ 2010 吧, Express 版本是不用錢的, 所以先玩玩看吧.!






Wednesday, September 02, 2009
WDK 7,0.0 (WDK for Windows 7) Release
Monday, November 03, 2008
WDK SP1 for Windows Server 2008/SP1 釋出
目前版本為 WDK SP1 for Windows Server 2008/SP1
有需要的人可以到 Microsoft Connet 去下載吧
Sunday, October 12, 2008
NASM 2..04 Release
• Sanitize macro handing in the %error directive.
• New %warning directive to issue user−controlled warnings.
• %error directives are now deferred to the final assembly phase.
• New %fatal directive to immediately terminate assembly.
• New %strcat directive to join quoted strings together.
• New %use macro directive to support standard macro directives. See section 4.6.4.
• Excess default parameters to %macro now issues a warning by default. See section 4.3.
• Fix %ifn and %elifn.
• Fix nested %else clauses.
• Correct the handling of nested %reps.
• New %unmacro directive to undeclare a multi−line macro. See section 4.3.10.
• Builtin macro __PASS__ which expands to the current assembly pass. See section 4.11.9.
• __utf16__ and __utf32__ operators to generate UTF−16 and UTF−32 strings. See section 3.4.5.
• Fix bug in case−insensitive matching when compiled on platforms that don’t use the configure script.
Of the official release binaries, that only affected the OS/2 binary.
• Support for x87 packed BCD constants. See section 3.4.7.
• Correct the LTR and SLDT instructions in 64−bit mode.
• Fix unnecessary REX.W prefix on indirect jumps in 64−bit mode.
• Add AVX versions of the AES instructions (VAES...).
• Fix the 256−bit FMA instructions.
• Add 256−bit AVX stores per the latest AVX spec.
• VIA XCRYPT instructions can now be written either with or without REP, apparently different versions of
the VIA spec wrote them differently.
• Add missing 64−bit MOVNTI instruction.
• Fix the operand size of VMREAD and VMWRITE.
• Numerous bug fixes, especially to the AES, AVX and VTX instructions.
• The optimizer now always runs until it converges. It also runs even when disabled, but doesn’t optimize.
This allows most forward references to be resolved properly.
NASM 2.04 下載點
YASM 0.7.2 發行
Changes from 0.7.1 to 0.7.2 include:
- Add PIC support to 64-bit Mach-O (#141).
- Add --prefix and --suffix options for naming globals (#132).
- Make "rel foo wrt ..gotpc" generate GOTPCREL in elf64 (alias for
"rel foo wrt ..gotpcrel").
- Add support for newly specified AVX/AES instructions not in original
spec (VAES* and 256-bit VMOVNT{PS,PD,DQ}).
- Remove invalid 256-bit form of VPBLENDVB.
- Optimize non-strict push with 66h override to byte size if possible.
- Fix address printing in bin map file.
- Fix GAS syntax handling of no section flags (#148).
- Name the absolute symbol in coff/win32/win64 output (#153).
- Miscellaneous other fixes.
YASM 0.7.2 下載點
Wednesday, May 28, 2008
Sunday, May 18, 2008
Nasm 2.02 與Yasm 7.1.0 5/14 同時發新版
不過有趣的是, 2008/05/14 同時Yasm與nasm 發新版, 這可真有趣
Yasm 7.01 Changes log
Changes from 0.7.0 to 0.7.1:
- AVX instruction bugfixes (0.7.0 errata)
- Build fixes (crashes on some machines)
- Minor CPU flags fixes
Changes from 0.6.2 to 0.7.0:
- Intel Advanced Vector Extensions (AVX) instruction support.
- Multi-section binary support (see #71, #99, [2010]).
- Add support for ELF32 and ELF64 TLS (thread local storage) relocations.
- Allow use of 0X in addition to 0x to prefix hex constants (#127).
- Allow underscores in hex, binary, and octal constants (e.g. 0111_1111b).
- Fix memory sizes on SSE/SSE2 instructions (#119).
- Allow standalone prefixes (#122).
- Simplify new varieties of sym-sym values (#124).
- Support SAFESEH directive for win32 SEH handlers (#130).
- Enable sym@FOO constructs in GAS parser.
- SSE5 condition code support.
- Other bugfixes.
2.02
----
* Additional fixes for MMX operands with explicit "qword", as well as
(hopefully) SSE operands with "oword".
* Fix handling of truncated strings with DO.
* Fix segfaults due to memory overwrites when floating-point constants
were used.
* Fix segfaults due to missing include files.
* Fix OpenWatcom Makefiles for DOS and OS/2.
* Add autogenerated instruction list back into the documentation.
* ELF: Fix segfault when generating stabs, and no symbols have been
defined.
* ELF: Experimental support for DWARF debugging information.
* New compile date and time standard macros.
* %ifnum now returns true for negative numbers.
* New %iftoken test for a single token.
* New %ifempty test for empty expansion.
* Add support for the XSAVE instruction group.
* Makefile for Netware/gcc.
* Fix issue with some warnings getting emitted way too many times.
* Autogenerated instruction list added to the documentation.
2.01
----
* Fix the handling of MMX registers with explicit "qword" tags on
memory (broken in 2.00 due to 64-bit changes.)
* Fix the PREFETCH instructions.
* Fix the documentation.
* Fix debugging info when using "-f elf" (backwards alias for "-f
elf32").
* Man pages for rdoff tools (from the Debian project.)
* ELF: handle large numbers of sections.
* Fix corrupt output when the optimizer runs out of passes.
Yasm 7.1 下載
Nasm 2.02 下載
Wednesday, September 26, 2007
yasm 0.6.2 發行
Friday, September 07, 2007
AMD 發表 SSE5 對產業的影響
X86 的指令集的製定, 當然x86指令的創始公司Intel所主導, 大家都只有跟隨的份, 不過有時候也會特例, AMD 的3SNow! 就是搶在intel 發表sse 之前發表, 讓MMX 指令可以支援符點運算, 並且首創Cache的控制指令, 而在AMD 64的指令與暫存器架構上的成功, 也讓Intel不得不屈於跟隨者的角度
我們先來回顧一下這些所謂的多媒體指令集的出現與其歷史地位
1997年 Pentium 首先加入MMX 指令, 這是在從386以後, Intel最大幅度的增加指令集的動作, 最特別的是, 這也是Intel首次加入一指令多筆資料運算(SIMD)的指令, 以灰階圖片都以一個byte來代表一個pixel為例, 64bit的MMX暫存器, 可以一次同時做8個pixel的運算, 例如同時加或同時減, 當時PC開始走多媒體路線時, 讓撥放VCD不再需要插入硬解卡, 對於PC進入家庭應用功不可沒
1998 3DNow! AMD 的k6-2 不甘示弱,不但完全支援Intel的MMX指令, 還更增加了浮點運算的單一指令多筆資料運算指令, 讓一些像圖學演算法, 或是3D運算需要使用浮點運算來處理更精確的計算, 得以大幅度提升效能, 而更特別的是它加入了Cache的控制指令, 可以以指令來控制快取的讀取時機, 讓CPU的執行更有效率
1999 SSE 總算珊珊來遲在Pentum III 時加入 3dNow! 的浮點運算SIMD指令, 不過其創新點在於, 它將浮點運算的暫存器獨立, 3d Now!與MMX 都是使用過去用於浮點運算(FPU)的8個80bit 的暫存器, 但SSE加入了另外8個128bit 的 XMM暫存器, 讓SSE 的浮點運算指令不但可以運算同時運算更多的資料, 也可以更精確
2001 Peituum 4 推出時加入了SSE2 指令, 首度讓實數(Interger)運算指令也可以使用128 bit的XMM 暫存器, 這著實讓人興奮, 因為大部份的像是MPEG 2/4 將運算最佳化只使用實數運算, 而這部份的加速, 在MMX/3DNow!後就沒有較特別的變化, 所以128bit 的實數相當於同時可以運算16個pixel的資料
不過令人失望的是, 128bit的資料, 似乎是內部分成64bit 兩次運算, 所以速度跟本快不起來, 而且因為讀取128bit 的資料因為一個cache line為16byte, 所以當讀取非對齊(align)16byte的資料時, 會有跨Cache line 的問題, 必需分成align的指令與非align的指令, 而當使用非align的指令需要兩個讀取週期, 所以速度有時反而比一次運算64bit資料的MMX指令還慢, 不過另一個令人失望的是AMD似乎放棄追趕SSE2 了
2003 AMD64的推出, 正式開啟x86 從32bit到64bit的升級, 雖然幾乎可以確定intel早就做這方面的設計了, 但似乎因為intel正全力推Itanium, 所以策略性的放棄, 這讓AMD看到的有洞可以鑽, 舉著延申正統x86的旗幟正式推出64bit的x86指令架構, 而對於SIMD的貢獻在於其將XMM暫存器增加一倍, 變為16個, 不過只限於在64 bit的模式下才可以使用
2004 Prescott 終於推出, 不過了無新意, 加入了SSE3, 除了因應intel Hyper-Threading 推的相關指令外, 也針對大家的抱怨加入了可以自動判斷是否有 algin 16 的資料搬移指令, 不過效果真的....沒感覺, 不過SSE3的創意在於, 他首度加入了水平運算指令
之前的指令都是 A0,A1,A2,A3 B0, B1,B2,B3 兩者相加之後為
A0+B0,A1+B1,A2+B2,A3+B3, 但在SSE3加入可以造成
A0 + A1, A2 + A3, B0 + B1, B2 + B3 的指令, 不過只能用於符點運算
2006年 Core 2 正式以core 架構取代P4 的NetBurst 架構, 並加入了 SSSE3(總算講到現代來了)指令集, 沒有取名為SSE4 大概是因為其指令並沒有特別的新義, 不過以我來看, 這才是Intel從1999年推出SSE指令後, 真正有聽進開發者聲音的改進, 首先他加強了實數運算的指令, 不但加入了新功能的指令, 也支援原本只有浮點運算的水平運算指令, 加強了align 16 的搬移指令運算效能, 也總算讓128bit的實數運算在一個執行週期完成
2007 春季IDF 在北京(幹..這時再也忍不住了, 一定要幹譙一下, 這是第一次IDF只有在大陸沒有在台灣 )首度發表SSE4的指令, 預計在2008/Q1 所發表的45nm 的CPU推出, 以書面的看, 真的是蠻棒, 可能是改成45nm 後, die的空間變多要找功能來塞吧, 連CRC都做進CPU了,也首度加入字串比較的指令,更加入更多實數運算指令, 真的很期待, 也希望不要重蹈SSE2的路, 中看不中用
前幾天發表的 SSE5 看來是繼AMD 的AMD64後最有創意的作品了..
更多的運算元, 最多到4的運算元, 也有3個運算元
例如
FMADDPS dest, src1, src2, src3; dest = src1 * src2 + src3
太神了, 不污染source data的運算指令
而且還使用了三個資料來源, 與兩種運算
更多的比較指令, 這可幫助程式減少執行分岐, 所造成piple line drop與cache miss的機率, 總之SSE5 的指令讓人驚奇
很有趣的是SSE5 已經發表好幾天了, 還沒見到intel發表官方說法, 這雖然不意外, 但也代表未來多媒體指令的方向還有很多不確定因素!!
這次SSSE5 與當年的3DNow! 的局勢不太一樣, 3DNow! 是直接推出, 讓intel措手不及, 不得已在已經要推出的 SSE 裡盡量相容3DNow!, 而SSE4 到2008 Q1 or Q2 就要推出了, SSE5則是要放在Bulldozer預計要2009年才會出現, 所以反而是AMD要不要考慮在新的CPU裡support SSE4, 而不是Intel 來考量這問題, 再者Intel本來就沒有義務加入對手制定的指令集, Intel覺的他是老大, 3DNow!與AMD64 都算是被迫出擊, 沒道理現在腳步站這麼穩了還要隨對手起舞
所以Intel 這次是有時間思考怎麼對付AMD這個突然的怪局, 而AMD打的算盤就有點詭異了,是想證明他有能力主導市場, 還是向 Intel提出建議, 我們來這樣做好不好的意味嗎? 這我實在有點搞糊塗,而且以SSE5 的使用來看, 比起SSE4 的務實做法, 是有比較花俏, 一個指令加入更多的運算元, 只會讓這個指令的運用範圍變窄, 以目前的Mpeg4 的encoder/decoder的code 來看, 運用的範圍不會太廣, 所以是不是有機會成為下一代的指令還有的拼, 加上Intel不見得需要理AMD, 不過在AMD64之後, Intel 對於AMD 的出招更顯謹慎, 如果要先說大話, 等市場變化後再來支援, 不如一開始就先大方的說合作 .
另一個需要評估的事, 這對一般使用者的影響, 基本上使用者是根本不會有感覺, 一般的軟體公司也不會處理這問題, 因為使用到這些特殊指令的程式不多, 大部份都集中在像是影音壓縮, 或是3D 動畫這類的軟體, 而對於商務軟體來說, 可能對於網路速度的要求還比軟體執行的速度更高, 而且就算是Intel 不甩AMD, AMD到最後也走自己的路, 跑出兩套指令集, 也只是苦了所謂的最佳化工程師, 會在底層跑兩套程式碼, 其實不止兩套, 只要Intel出一個新的指令集, 相關的程式都需要增加, 但上層的程式發開是不會有感覺的, 更不用講使用者了..!!
所以看來這個仗還有的打, 讓我們再慢慢看下去!
Wednesday, July 18, 2007
Watcom C/C++ for DOS
好久沒有寫Watcom 的程式了, 雖然知道它已經Open Source 了, 但確一直沒有Download 來玩, 這次要寫DOS程式, 所以才完整下載, 不過IDE 竟然不Support 16 bit DOS程式, 也就是跟以前一樣, 還是要直接在consol mode 與editor 裡切換
不過這不是重點, 因為在windows 下跑cross compiler 再Copy到dos 下執行, 實在很累, 所以我只好手動建立在FreeDOS 下的Compiler 環境, 不過總是缺東缺西的, 在一時無聊翻閱FreeDOS 的 Software list, 才發現原來FreeDOS已經有包好的watcom 套件了, 所以我到 Pkgs找了一下果然有
owatcomx.zip
直接放入前一篇所寫的USB Flash DISK 裡就可以在開機後使用了
PS: 搞了老半天, 寫程式的時間還比搞環境的時間少
Tuesday, July 17, 2007
FreeDOS 用 USB Flash 開機
我的Idea 是用USB 開FreeDOS, 然後在上面跑Watcom C/C++來寫DOS程式, 所以找了一些資料, 總算給它搞定, 程式也寫好了, 所以我就將步驟記錄一下, 也讓大家參考
1. 下載 FreeDOS 的軟碟開機影像檔 FDSTD.288.imz
2. 下載WinImage WinImage 8.0
3. 用WinImage 解開 FSDTD.288.imz 到一個指定目錄
4. 下載 Format Utility for HP Drive Key or DiskOnKey USB Device 並安裝5. 執行HP USB Key :
a . 點選 Create a DOS startup Disk
b. 在using DOS system files located at : 的地方選擇剛由WinImage 解開的FreeDOS 開機片目錄
c. 按下Start 之後開始進行USB Flahs Disk 的 Format

6. 將WinImage所解開的FreeDOS 開機片裡的檔案完全拷貝進USB Flash Disk 裡, 因為HP USB Key程式只要處裡開機檔, 而其它的FreeDOS的程式還是需要手動拷貝
7. 重新開機後, 進入BIOS 裡, 設定USB HDD 開機(有的直接可以在HDD Boot Device priority 可以看到USB )為最優先的
8. 還8呀....開機摟..!!
相關連結
1. gentikayos - FreDOS on a USB Flash
2. Boot Disk Create USB
後記 : 感謝Rob提醒 USB Utility 下載連結已經修正
Monday, May 28, 2007
瀏覽網路磁碟時, 出現要選擇執行程式問題的解法
總算找到原兇, 也把毒給砍了, 不過這下可好了, 只要在autorun.inf 還沒砍時期, 曾經連過這個網路磁碟的電腦, 只要再讀一次網路磁碟, 像我就是一開到z: 這個磁碟, 就會出現下面的Message 啦

要你選擇要開啟它的程式, 只要點選Internet expolere 就可以進入檔案管理員正常作業, 只是每次都要給它來一下就超不爽, 所以特別把他找了一下, 在此列出來以示紀念吧..!
滑鼠點到 "開始"->"執行" 然後輸入 regedit

點開後到
[HKEY_CURRENT_USER\SOFTWARE\
Microsoft\Windows\CurrentVersion\
Explorer\MountPoints2\##fileserver#Share]
##fileserver#Share 是指 \\fileserver\Share
將整個目錄都給砍了, 然後就解脫了..!!
Thursday, May 10, 2007
Windbg 6.7.5.0 Release
!analyze enhancements
這是對懶人分析 Crash Dump 最重要的指令, 不過也沒有看到它Enhance 了啥, 反正裝了就是了, 不過裝完後, 也沒有啥好分析的, 所以就忘了試了, 今天同事傳了幾個客戶的Crash Dump 來, 打開後嚇一跳, 原來enhance 是這樣來的..
Install 32-bit Beta version 6.7.5.0 [15.8 MB]
