2

Mac Think Pascal で書かれた古いプログラムを Windows 上の Pascal に変換しています。Pascalには、次のようなビット操作用の関数があると思います

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

...その他。これらの関数が何をするか知っているなら、助けてください。

「従来の Macintosh Pascal コンパイラから GNU Pascal への移植」などの関連情報を見つけました。andこのドキュメントには、 、orshrなどのビット演算子を使用したビット関数の実装が含まれていますshl。ただし、ドキュメントの説明が正しいかどうかはわかりません。

関数のおおよその意味を知っています:

  • btst(n,i)n の i 番目のビットが 1 の場合は True、それ以外の場合は False
  • bitxor(i,j)ビット単位の「xor」です
  • bclr(n, i)n の i 番目のビットを 0 に設定します
  • bset(n, i)n の i 番目のビットを 1 に設定します

ただし、関数内の変数の正しい順序 (btst(n,i)または などbtst(i,n)) がわかりません。また、ビットはどのように番号付けされますか? 左から右へ、0 または 1 から開始しますか? これらの 4 つの機能についてご協力いただきありがとうございます。

4

2 に答える 2

0

(すみません、もう少しスペースが必要でした)

Free Pascal での Dev Pascal 1.9.2 のビルドは基本的にベータ版であり、非常に古く、2002 年以降はそのような機能がありません。しかし、dev-pascal は新しい FPC で使用できると聞いています。Lazarus はそれ自体を再コンパイルするところまでかなり近づいています :_)

{$mode macpas }をプログラムおよび/または「インターフェース」行 (ユニット内) の後に置きます。コマンドラインも可能です、 -Mmacpas (ソースの $mode によって却下されない限り、コンパイラの呼び出しによってコンパイルされたすべてのものに適用されます)

名前を付けた関数はモード MacPasc でサポートされていますが、bitxor は bxor() と呼ばれます。Afaik MacPascal は主に CodeWarrior Pascal をモデル化していますが、それはほとんどがスーパーセットであるため、通常は正常に動作すると考えてください。いくつかの Thinkisms が追加されました。

macpascal の知識はほとんどないため、メインの fpc リストメインの fpc リストまたはMac Pascal リストのいずれかに登録することをお勧めします。

General Lazarus Forumも FPC の目的で悪用されていますが、古い Apple 方言について詳しい人は少ないと思います。

于 2013-04-27T10:38:23.727 に答える