Showing posts with label tech.. Show all posts
Showing posts with label tech.. Show all posts

Tuesday, March 18, 2014

Visual Studio 的ipch/ 目錄

最近在整理較大系統的 git 目錄結構, 要把整個git untracker 的檔案分開, 所以要指定一些VC產生出來的目錄, 整理到 ipch 時很抓狂, 它就一直黏著.sln 檔放

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 submodule update 後, 每次都在要commit 時被提醒沒有設branch, 這很怪, 查了一下才注意到root 在記錄submodule 的狀態只記錄最後commit 的hash id, 並沒有記錄是那個branch 的, 所以當你submodule update 會將hash id update後, 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進行分析的方法

常常得要分析不論 OS 的crash dump 或是AP 的dump, 利用按右鍵開啟windbg 的方式是無法使用的, 無意間看到, 做個記錄


-IA[S]
Associates WinDbg with the file extensions .dmp, .mdmp, and .wew in the registry. After this action is attempted, a success or failure message is displayed. If S is included, this procedure is done silently if it is successful; only failure messages are displayed. After this association is made, double-clicking a file with one of these extensions will start 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.


所以只要執行 windbg -IA
這樣就可以直接dobule click dump file 就可以開始來分析了...!!


Thursday, December 09, 2010

VC++ 2010 Express on X64 for MFC app developer

最近x64 上Driver 工作開始收尾要移到x64 App上工作, 用了N年的VC6看來確定無法繼續了, 既然要改開發工具, 所以就直上VC++ 2010 吧, Express 版本是不用錢的, 所以先玩玩看吧.!

有中文版可以下載, 不過VC中文版怪怪的, 所以還是下載英文版
安裝完後才發現, 沒有x64 開發環淨
所以只好下載由Platform SDK 改名為 Windows SDK 來安裝,
最新版本為7.1 , 分成三個版本, ia64 我用不到, 所以就不貼上來
GRMSDKX_EN_DVD.iso X64 的版本
GRMSDK_EN_DVD.iso X86 的版本
安裝完後, 回到VC++ 2010 express 打開projects , 在平台選項中選Configuration Manager
然後新增類型


這時就可以看到x64 了



新增完後, 回來看到projects 上就可以選x64 了

不過還是沒有MFC , 因為免錢的總是還是有限制的

Microsoft 提供Driver 開發的工具WDK, 從WDK 2008 也就是 build 6000 以後的版本 裡面有MFC 4.2 的,所以將就點用應該還可以


都已經到這裡了, 再多下載一次吧, 安裝完後設定
要在路徑中加入
inc
C:\WinDDK\7600.16385.1\inc\mfc42
C:\WinDDK\7600.16385.1\inc\atl71
lib
C:\WinDDK\7600.16385.1\lib\Mfc\amd64
C:\WinDDK\7600.16385.1\lib\ATL\amd64


好吧, 這樣總算compiler MFC 沒問題了, 不過因為沒有MFC wizard , 所以還是很不直覺,
不過只能將就點用摟.!!!

參考資料 :

Wednesday, September 02, 2009

WDK 7,0.0 (WDK for Windows 7) Release

WDK 7.0.0 代號為7600 在2009/08/05 發版, 主要當然是Windows 7 要出版了, DDK 的部份先發行了

可以到 MicroSoft Connect 免費下載

另一個WDK 的消息是 WDK 的說明資料改用MicroSoft Document explorer 實在很慢,Microsoft 總算聽進建議, 要推出CHM的版本, 想要下載的人可以到 這裡 選CHM的版本下載

或是直接下載, 還真是快多了

Monday, November 03, 2008

WDK SP1 for Windows Server 2008/SP1 釋出

因應即將出版的 Windows Server 2008 R2, 所以WDK 先Final 了.
目前版本為 WDK SP1 for Windows Server 2008/SP1

有需要的人可以到 Microsoft Connet 去下載吧

Sunday, October 12, 2008

NASM 2..04 Release

雖然我的工作都改用YASM 了, 不過還是會注意一下NASM 的發展, 它其實已經在 2.05rc3 了, 可能最近就要發2.05 了吧, 不過貼一下它的2.04 的Change log 吧

• 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 發行

YASM 0.7.2 正式發行了, 本以為會加入這以天密切討論的TASM 語法, 不過看來要失望了, 應該會放在0.8 摟..

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

Windbg 6.9.3.113 Release 加入"炫"的功能

感覺上, 新版的WinDBG 速度加快了不少, 像是watch 就不會hang 住很久, 不過移動了一下視窗才發覺, ㄟ.....透明背景, 不會吧..!!

WinDBG 下載

Sunday, May 18, 2008

Nasm 2.02 與Yasm 7.1.0 5/14 同時發新版

有競爭總是好事, 從nasm 0.98 切換到yasm 6.0 使用後, 才開始注意到兩個團體的競爭, 不過yasm可能因為整個程式結構的關係, 所以support 起新的指令很快速, 不過可以看到nasm也開始打拼了, 不過最近遇到了Yasm一個bug, 不過很快的7.0出來後就解了

不過有趣的是, 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.
nasm 2.02 Change log

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 發行

剛才看到 yasm 出新版的 0.6.2, 從release note來看, 最大的特色就是加入了AMDSSE5 的支援了, 離9月初AMD發怖SSE5 也沒多久, 看來yasm 果然比nasm還積極很多, 不過由nasm 的maillist 來看, 應該也快要支援了吧, 重點是, 他們怎麼知道試呀, 應該是跑模擬器吧, 如果是跑實驗室版的CPU就爽了

我也一直想要 AMD 的CPU 說, 不知道 AMD會不會看到我的Blog,也借我一顆玩玩吧.!!

YASM 下載

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 C/C++ 是早先寫DOS 很有名的 Compiler, 在Windows 3.1 已經很流行時, 讓GAME的市場還是一直以DOS為主的重要原因, 不過轉捩點在於 DirectX 的出現, DirectX提供了很好的效能,不過這並不在本篇範圍

好久沒有寫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 開機

最近因為突然需要寫個DOS 的程式, 想說用軟碟開機來寫就好, 但容量又太小, 又不想灌在硬碟裡, 因為寫完這次, 不知道下次哪時會用到, 剛好之前某3C量販太俗賣時買了一張2G的SD卡, 就拿來當DOS開機片吧..!!


我的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

瀏覽網路磁碟時, 出現要選擇執行程式問題的解法

前一陣子, 出現那種會在USB 碟裡寫入AutoRun.inf 然後指向到同目錄的recycle.exe, 公司內有人中標, 結果就將autorun.inf 與recycle.exe 寫入網路磁碟空間的root, 我是將它映對成 z:

總算找到原兇, 也把毒給砍了, 不過這下可好了, 只要在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

4 月底, Windbg 就出新版本了 版本是 5.7.5.0, 看了一What's New 也沒啥特別的, 不過有一行倒吸引我

!analyze enhancements

這是對懶人分析 Crash Dump 最重要的指令, 不過也沒有看到它Enhance 了啥, 反正裝了就是了, 不過裝完後, 也沒有啥好分析的, 所以就忘了試了, 今天同事傳了幾個客戶的Crash Dump 來, 打開後嚇一跳, 原來enhance 是這樣來的..

滑鼠直接點就可以省掉打!analyze -v , 按右鍵還可以選開New Window, 看來Microsoft 也開始照顧我們這些程式設計工了

Install 32-bit Beta version 6.7.5.0 [15.8 MB]