Dark-Destroy
元老会员
积分 8312
发帖 3551
注册 2003-3-22
状态 离线
|
『楼 主』:
[转帖]◇ DOS程式設計的未來
--------------------------------------------------------------------------------發信人: EightCloud.bbs@csie.nctu (嵐雲), 信區: programming
標 題: DOS程式設計的未來
發信站: 交大資工天龍新聞社 (Thu Jan 26 02:10:28 1995)
轉信站: cis_nctu!news.cis.nctu!news.cc.nctu!news.csie.nctu!nctubbsgate!csie.nc
未來, Windows NT & Windows 95 將是 M$ OS 中的主角, 縱使
M$ 繼續出 DOS 7.0, 那似乎也只淪為配角, 那是否我現在學的 DOS 程
式試計都沒用了呢? 一定要去學 Windows 的 GUI 程式,以 message-drivern
的觀念, 用 SDK 或是 MFC,OWL 那種 frame class 去寫程式呢? 答案不是那
樣的, 現在的 dos 程式, 仍可在 NT&95 下重新 compile, 成為 Win32 中
console 的程式, 也就是文字模式的程式.
不過,當然有些程式設計的技巧是以後用不上,或者是不能用的. 在
這裏, 我是想提供一些有關此類的資訊, 跟大家分享討論.
首先,介紹一下 Win32 API. API 是 Application Programming
Interface(程式設計介面) 的縮寫, 類似 system call(系統函式呼叫). 要知道,
在一個 OS 中, 不允許一個 AP(應用程式) 直接去接觸硬體, 一切都要透過
OS來處理, 而 API 就是一些由系統提供的函式, 讓程式設計者使用. 而 M$
定義了 Win32 API, 做為今後 M$ OS 的標準.
Win32 API 不僅適用於 Windows GUI 程式, 同時也適用於 32 bit
的 console(DOS mode) 程式. 例如, 你現在可以在 console(dos) 下用
LocalAlloc 配置記憶體, 或是用 CreateProcess 建立一個新的 process,
就像 Unix 中的 fork 功能一樣; 在 dos 中,仍然可以使用到
dll, ole2, dde, clipboard....., dos 和 windows 界限不再那麼清楚.
換句話說, console(dos) 是 winNT&95 的文字模式, 傳統 win3.1 程式是屬
於 winnt&95 的 圖形使用介面(GUI)模式, 兩者同是 Win32 程式.
在 Windows NT 上, 系統提供你完整的 Win32 API. 在 Windows 95
上, 只提供一 Win32 的子集, 名稱似乎未定, 可能為 Win32r(去年m$對外公佈
文件有提到) 或是 Win32c (beta 版文件提到). 沒提供的 API, 也就是 Win95
中沒有的功能,像有關 C2 security, NTFS 的 API 等等. 在 Windows 3.1 上,
利用了一些 dll, 提供了另一子集 Win32s API. Win32s 大部份是舊有 API 的
32 bit 版, 沒有 任何多工,或者是 security 的東東.
因此, 寫 Win32 程式可以適用於今後的 Dos&WinNT&Win95, 透過 NT
的跨平台, 你的程式也可以在 PowerPC, Alpha, Mips 上跑.
在 WinNT&95 中, 舊 dos 中的 64k 限制將不再存在, 任何指標都是
32bit, 不再分 near far, 所有 new,malloc 都沒有 64K 限制, 也因此不在再
有什麼 tiny,small,large...mode. 使用的是 flat addressing mode, 每一個
程式都有 4GB 定址空間, 不再有 segment 的出現, Expand&Extent Memeory
的名詞將步入歷史.
不要透過任何中斷(不管是bios或是dos的)或直接去硬體接觸,要去利用
Win32 API. 中斷是屬於 real mode 且是 16 bit 程式, 重要的是並沒有考
慮到多工下的執行環境. 若需要寫程式和硬體週邊設備溝通,那就要用到 DDK 了,
不能在一般 AP 裏做此事情. 在 win95 的 dos 中,直接和硬體接觸的程式應該不會出
問題,這是它為了要維持和舊AP的相容性(也因此些破壞了系統的穩定性), 並不是
理想的做法.
TSR 常駐程式這個名詞,也將成為歷史吧! 在一個 preemptive 的多工,
任何程式只要不結束,就是常駐程式. 喜歡用 TSR 去攔截 中斷, 有相對利用 dll
去攔截 API 的呼叫.
嗯! 現在就想到這麼多,若有想到,再補充. 若有錯誤,歡迎指教.
|
MSN:tiqit2@hotmail.com
|
|