2013-04-25 23 views
1

我正在將Windows上編寫的舊程序Think Pascal轉換爲Pascal。認爲帕斯卡具有位操作功能,如Think Pascal中的位功能

btst(n, i : longint) : boolean 
bitxor(i, j : longint) : longint 
bclr(n, i : longint) : longint 
bset(n, i : longint) : longint 

...等等。如果你知道這些功能是做什麼的,請幫忙。

我發現了一些相關的信息,例如"Porting to GNU Pascal from traditional Macintosh Pascal compilers"。本文檔使用按位運算符(如and,or,shrshl)實現了位功能。但是,我不確定文檔中的描述是否正確。

我知道的功能,大概意思是:

  • btst(n,i)是真,如果n的第i位爲1,否則爲假
  • bitxor(i,j)是按位 '異或'
  • bclr(n, i)套我的n個位爲0
  • bset(n, i)設定n的第i位至1

但是,我不知道函數中變量的正確順序是什麼(例如, btst(n,i)btst(i,n))。另外,位如何編號?從左到右,從0還是1開始?感謝您對這四項功能的任何幫助。

+0

FWIW它應該與MPW Pascal中的相同,對此可以在線獲取更多信息。 – 2013-04-25 15:39:26

+0

你現在不說你使用了什麼編譯器?如果您使用Free Pascal,您是否啓用了macpas模式? – 2013-04-26 06:48:29

+0

@Geoff:感謝您編輯我的問題。 – user2320292 2013-04-26 19:28:49

回答

0

(對不起,需要一些更多的空間)

在開發帕斯卡爾1.9.2免費帕斯卡爾構建本質上是一個測試版,非常,非常老了,沒有這樣的功能,因爲它是2002年的時代。但是,我被告知,dev-pascal可以和更新的FPC一起使用。 Lazarus非常接近重新編譯這個東西本身:_)

{$ mode macpas}後程序和/或「接口」行(在一個單位)。命令行也有可能,-Mmacpas(這適用於所有由編譯器的該調用編譯除非$模式源否決)

你的名字在模式MacPasc支持的功能,但BITXOR被稱爲BXOR()。 Afaik MacPascal大部分都是CodeWarrior Pascal的模型,但是因爲它大多是超集,所以Think afaik通常可以正常工作。一些思想增加了。

由於macpascal知識相當罕見,您可能需要訂閱主要fpc列表main fpc listMac Pascal List

General Lazarus Forum也被濫用FPC的用途,雖然我希望那裏的老蘋果方言知識較少的人。

+0

感謝您提供信息。正如你所建議的,我嘗試在FreePascal中使用mode macpascal。在我看來,編譯器仍然不能識別這些位功能。此外,我嘗試改變編譯模式,使用菜單'選項' - >'編譯器'等,也沒有效果。也許我應該嘗試拉撒路。無論如何,謝謝大家的幫助。 – user2320292 2013-04-28 12:45:47

+0

你使用的是最新版本的Free Pascal,而不是使用dev pascal 1.9.2的舊版本嗎?見第一段回覆。我被告知dev-pascal可以使用更新的pascal版本進行升級。 – 2013-04-28 14:55:46

+0

我使用了FreePascal Ver。 1.0.12 2013/02/12(Compiler 2.6.2)。當我編譯模式爲「Macintosh Pascal方言」時,FreePascal會給出以下「錯誤:非法參數:-Mmacpascal」。也許,這種模式只適用於Mac電腦。順便說一句,如果我將模式切換回「Free Pascal」,編譯器會給出錯誤信息「無法打開文件D:\ ... \ fp.cfg」,可能這是FreePascal的一個錯誤,謝謝您的幫助。 ,這個線程可以關閉 – user2320292 2013-04-28 19:42:25