真魚の64bit化
一般人向けのパソコンにVistaが載っていた頃は、やっぱりXPとの互換性を大事にしたからか32bit版のものが多かったが、同時に64bit版も売ってたせいで特にデバイスドライバの64bit対応が加速してくれて、7が出たらもう一般人向けのパソコンはほとんど64bit版になってくれた。そのせいでOSは64bitなのにメモリーは従来通りの2GBしか搭載されてないモデルばっかりの暗黒時代を経由する事になったが、今ではみんな4GB搭載になり、いよいよもう32bit時代は終わったと思ってもよくなった。普通のアプリケーションは64bit版と32bit版を分けて作る必要がなくて、32bit版だけ作っておけば両方のOSで普通に動く。だから、もともと32bitで作ってきたアプリはそのまま32bitで作り続ければいい。でも、今後自分で新しいアプリを作るなら、あえて古い32bit対応は考えなくてもよくなったから、64bit版だけ作ればいいだろう。
真魚を作るのに使っているDelphiは、今回のバージョンから64bitコンパイラを搭載しているのが気になってて、真魚を64bit化したいから欲しいなぁと思っている。でもバージョンアップ版で5万円なので、真魚を作るという用途だけのために買って良い物か悩みどころ。そもそも、買ったって真魚を64bit化できるのかと。もう何年もいじってないソースをいじって、64bit対応させる能力があたし自身にあるのかと。しかしやってみたい事の一つではあるので、とりあえず体験版を試してみた。体験版を試している時点で、あわよくば製品版を買おうという気持ちはあるって事だ。
古いDelphiから新しいDelphiにソースコードをインポートすると、以前はいっぱいエラーが出てなかなかまともにビルドできない事が多かったが、今回は全く修正を入れずに一発でビルドできた。少なくとも32bit版の方はほとんど進化してないって事だと思う。64bit版もそのままビルドできたんだけど、起動するとアクセスバイオレーション連発でまともに動かない。なんせエラーが出ないでビルドしちゃうくらいだから、Delphiにもどこが悪くてそうなのかわからないようで、デバッガ付で実行してもどこのブレイクポイントにも止まらない。Delphiが関与してない32bitコードを結構自前で書いてるんだろう。これを64bit化するのは大変そうだ。
32bitの決めうちをしてる部分も結構多くて、ポインターを増減させるときも4バイトずつにしちゃってるせいでおかしかったりしたが、そういうのはおかしければすぐわかるからまだいい方だ。通常使ってるIntegerやCardinalは自動で64bit化してくれないみたいで、大きなデータを扱おうとしたときにようやく不具合が出るので、せっかく64bitで動かしてもデータを32bit相当でしか扱えず意味なしな状態になっちゃう可能性がある。自動で全部チェックしてくれたらいいんだけど、そこまではできないからこそ、コード一切修正なしでビルド通っちゃうんだろうな。
で、もし自分で書いてる部分を全て64bit対応させる事ができたとしても、残される問題として正規表現を行うために使っている鬼車のDLLが32bitで更新が止まっているという現状がある。64bitアプリが32bitのDLLを利用するってのはたしか無理なはず。あたしは自前で正規表現ライブラリを書けないので、何か見つからなければ64bit版真魚には正規表現を搭載できない。