大約在1980年代,PASCAL程式語言成為外國很多學校用來教程式語言基礎的一種標準電腦語言。
1990年代有套程式設計工具Turbo PASCAL,很多MS-DOS下的應用程式都用這個工具來開發。
後來,Windows開始興起時,有一套稱為Delphi的開發工具,也是以PASCAL言言為基礎的Windows應用程式開發工具。
PASCAL言語之所以成為教程式語言的基本語言,有兩個原因:
咳~~講遠了....
MS-DOS的定址能力有些很奇怪,,它是以8位元、64K為一個Segment,然後再堆疊出16位元的遠程定址能力,這或是因為8088 CPU的非連續式定址方式造成的結果。8088雖然是16位元CPU,但實質上是以8位元運作。
回到樓主的問題。
這裏的FAR PASCAL中的PSACAL,就是指PASCAL語言中的堆疊應用方式。
而FAR是組合語言中的定址能力的用語,FAR代表遠程定址,所以FAR PASCAL意思就是遠程定址的堆疊。
用組合言語的觀念去思考會比較能獲得具體概念。
我印象中,NEAR是指在8位元定址範圍內,FAR是指8位元外16位元內。
微軟為何在C++中用FAR PARSCAL呢?這是早期為了與業界慣用語法相容,但FAR PARCAL在16位元開發環境中還有做用,但到了32位元就完全只是為了相容才存在,實際上沒有任何效果。
因為Compile過程中會自動轉成__stdcall來呼叫。
換句話說,這和作業系統的定址方式有關,也和CPU的定址方式有關。
古早時期,Intel CPU為了能夠降低CPU的價格,發展出內部16位元,外部8位元的CPU,再利用堆疊、定址來達到16位元記憶體的定址能力,也因此造成MS-DOS的畸型發展,以及個人電腦的應用方式限制。
後來,CPU的發展到80386完全32位元CPU時,就沒有這種定址、堆疊的限制,於是FAR、NEAR、PASCAL就不再有作用了。
以上,是我的印象中的整理,如果有講錯的地方,請邦友們指正囉~~~~
這是大叔才能講得歷史啊~~~
話說,那一本書是計概嗎?
fillano提到:
那一本書是計概嗎?
有些在亂編的計概....
想學視窗程式...所以就去圖書館找了一本書來看...
下次記得看一下出版日期,這本從findbook.tw查詢結果,是1991年出版?所以是for windows 3.0的?建議你至少找2001年之後的書。
fillano提到:
1991年出版
22年前出版的書,看起來還這麼新,Windows SDK真的是非常冷門的書籍...
以前學windows程式設計,除了msdn library,大概就是Charles Petzold的Programming Windows系列,至於進階的主題大概就是Jeffrey Richter的幾本書...不過很久沒碰XD...最近一次寫windows的程式,是為了掛勾勾。
當年在學校的時候.......WINDOWS??....還沒出...
後來上班第一次寫視窗程式,記的就是一個無窮迴圈,一直收EVENT還是MESSAGE,然後再判斷要做啥事...
遠程呼叫,參數傳遞順序使用pascal的設計。
遠程呼叫他有解釋了,pascal是一個程式語言。
補充一下:
通常在C裡面呼叫函數的動作,在組合語言大概是:
維基百科是你的好朋友
http://en.wikipedia.org/wiki/X86_calling_conventions#pascal
Based on the Pascal programming language's calling convention, the parameters are pushed on the stack in left-to-right order (opposite of cdecl), and the callee is responsible for balancing the stack before return.
This calling convention was common in the following 16-bit APIs: OS/2 1.x, Microsoft Windows 3.x, and Borland Delphi version 1.x.
這意義非常簡單,也就是打電話時『外埠頭要加 02』這個意思。
現在想學視窗程式,如果是興趣的話,可以繼續看這本書。
但如果想用在工作上或實際的系統上,如WinXP,Win7,Win8的話,你應該改看
Visual Studio 系列的書
通常初學者建議學 Visual Basic , Visual C# , Java這三大語言
Visual Basic , Visual C# 為微軟的程式語言
JAVA則為 昇陽的程式語言
JAVA可誇多平台 , 意指 Windows , Linux 重新編譯後即可使用
Visual 系列語言則僅能在微軟平台上運作