スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 明日からが本番 | トップページ | 32/64Bit版の合体も完了 »

32Bit版もビルド可能化

今は、MasterReversiの次バージョンを開発中で、現行版は32Bit用と64Bit用でビルド環境が別になっているので、今日は、合体の準備として、本来必要なリバーシエンジン系以外を64Bit用からコピーした環境に32Bit用リバーシエンジンを上書きしてビルド可能にした。

今日の時点で、32Bit版についても、Visual Studio Community 2013を使ってUnicode文字セットでビルド可能になったのだが、まだ、64Bit版との合体は行えていない。

何故行えていないのか、というと、MasterReversiのソースファイルは150個くらいあって、ヘッダーファイルを含めると、その二倍の300個はあるので、作者的にも、どのファイルが32Bit専用で、どのファイルが64Bit専用なのか、というのが良く判らなかったからだ。

当然の事ながら、リバーシエンジン用の幾つかのファイルは32Bit用と64Bit用で別になっている、というのは判っていたのだが、それらのファイルが定義している処理関数は微妙に異なるので、それが影響して、それらの関数を使用している別ファイルも、芋づる式に異なるモノになっている可能性があった訳だ。

なので、今日は、まず、既にUnicode文字セットにして動作可能になっている64Bit版用のビルド環境をコピーし、そこに、上記の32Bit版用のリバーシエンジン関連のファイルを上書きしてみた訳だ。

当然の事ながら、32Bit版用のリバーシエンジン関連ファイルは、まだ、マルチバイト文字セットのままだったので、上書きしたファイルをUnicode文字セットに変更する作業は必要になったのだが、ビルドしてみると、その他のファイルにもエラーが出た訳だ。

このため、次に、エラーが出たファイルの内容を見てみて、#ifdefで局所ルーチンを変更するだけで済むモノについては、そういう格好にしたのだが、変更量が結構多くなるファイルについては、32Bit用から上書きコピーした。

その結果、今日の時点では、11個のソースファイルについて、32Bit用と64Bit用で別ファイルにする必要が生じているのだが、とりあえず、その11個のファイルを32Bit用としたビルド環境でも、ビルドは可能となり、32Bit版も動作する様になった。

もっとも、今日の時点では、32Bit版と64Bit版は別のビルド環境になっている訳なので、このままでは、ソースコード環境が改善されたとは言えない。

なので、明日は、今日の続きとして、上記の11個のファイルについて、32Bit版と64Bit版で共用できる格好に変更するのだが、BookとDataBaseについては、32Bit版でも、64Bit版のソースコードを使う格好にするかもしれない。

ちなみに、BookとDataBaseのソースコードが32Bit版と64Bit版で異なる理由は何なのか、というと、32Bit版では、内部データとしてポインタを使用しているのだが、64Bit版では、自前のハンドルを使用する格好にしてあるからだ。

何故、そんな格好になっているのか、というと、32Bitバイナリでは、ポインタは4バイトなのだが、64Bitバイナリでは8バイトになるので、64Bit版を32Bit版用のソースコードからビルドすると、メモリ使用量が2倍になってしまうからだ。

ポインタの代わりに自前のハンドルを使うと、データへのアクセスが間接アクセス形式になってしまうので、処理速度は低下してしまうのだが、64Bit版では、使用メモリ量を倍増させる訳には行かなかったので、こういう形式に変更した訳だ。

しかし、32Bit版は、ポインタ形式のままにしておいた方が、メモリ使用量も少ないし、処理速度も速いので、変更しなかった訳なのだが、64Bit版のBookやDataBaseの処理速度が遅いのか、というと、実用上、別段、問題は無い速度で動作している訳なので、今回、32Bit版でも、64Bit版のコードを使おうかなあ、と、思っている訳だ。

そうした場合、32Bit版同士を比較すると、処理速度は若干低下し、使用メモリ量も少しは増える筈なので、ある意味、改悪にしかならないのだが、巷では、Ubuntu用のChromeが32Bit版のサポートを終了する、なんて話になっている訳だ。

つまり、作者的にも、今時の主流は64Bit環境になる訳なので、32Bit版には、あまり労力はかけたくないので、サポート終了する代わりに、極力、64Bit版用のコードを使う格好にして、サポート用の労力を減らそうとしている訳だ。

もっとも、評価演算ルーチンについては、64Bit用のコードを32Bitでビルドすると、処理速度は2倍以上低下する筈なので、こちらについては、今回も、32Bit専用コードを残そうと思っている。

= この記事に関連する公開中ソフト =

MasterReversi

MasterReversi

(2016/05/04追記)

« 明日からが本番 | トップページ | 32/64Bit版の合体も完了 »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/63328276

この記事へのトラックバック一覧です: 32Bit版もビルド可能化:

« 明日からが本番 | トップページ | 32/64Bit版の合体も完了 »

2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google