llvm release 3.3のコード

llvm-avrがtrunkから引っ張ってきたコードベースだと上手く動かないので
Release 3.3版のコードをとりあえず引っ張ってくる

svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_33/final llvm

cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_33/final clang
svn co http://llvm.org/svn/llvm-project/lldb/tags/RELEASE_33/final lldb
svn co http://llvm.org/svn/llvm-project/poolalloc/trunk polalloc
svn co http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_33/final libcxx
svn co http://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_33/final compiler-rt

polallocはRELEASE 3.3が存在していなかったので、とりあえず最新版を使うことにする

OS X 10.8にgcc 4.8をインストールする

OpenCore 1000用のLLVM llvm-or1kをOSX10.8にインストールしようとしたところ、OR1KDisassembler.cppでエラーが発生。エラーメッセージをみると2進数表現b11111(31)がエラーの原因となっている様子。

llvm[4]: Compiling OR1KDisassembler.cpp for Debug+Asserts build
llvm-or1k/lib/Target/OR1K/Disassembler/OR1KDisassembler.cpp:131:38: error: invalid suffix "b11111" on integer constant

Googleで調べてみると0bから始まる二進数表現はgcc 4.4.0から使えるとのこと。(参照URL
OSX 10.8はllvm-gccは4.2.1だったので、別途Homebrewを利用してgcc4.8をインストールしました。
以下インストール方法

  • Homebrewでgccをインストール

brew tap homebrew/versions
brew install gcc48

sudo ln -sf /usr/local/bin/gcc-4.8 /usr/bin/gcc
sudo ln -sf /usr/local/bin/g++-4.8 /usr/bin/g++

Snowleopardに開発用としてSDL 1.2.14をインストールする

OSX 10.6.8 XCode 3.2.6に開発用としてSDL 1.2.14をインストールしたので、以下その備忘録。

1. ファイルのダウンロード
SDLのhome pageSDL downloads pageから

をダウンロード。

2. ランタイムのインストール
SDL-1.2.14.dmgをマウントし、そこからSDL.frameworkを

/Library/Frameworks

にコピーする

3. テンプレートのインストール
ターミナルを起動し、そこから以下のコマンドを実行してインストール先となるディレクトリを作成

sudo mkdir -p /Library/Application\ Support/Developer/Shared/Xcode/Project\ Templates/Application

SDL-devel-1.2.14-extras.dmgをマウントし、そこから

XcodeTemplates/TemplatesForXcodeSnowLeopard

を先ほどターミナルから"sudo mkdir -p"で作成したディレクト

/Library/Application Support/Developer/Shared/Xcode/Project Templates/Application

にコピーする

4. ドキュメントのインストール
SDL-devel-1.2.14-extras.dmg上の

Documentation/docs/XcodeDocSet/org.libsdl.sdl.docset

/Library/Developer/Shared/Documentation/DocSets

にコピーする

5. その他SDL追加パッケージ
ついでに以下のパッケージ

をダウンロードし、そのFrameworkを

/Library/Frameworks

にコピー

iPhone用のOpen Source Math Libraryメモ

VFP Math Library

整数ベースのtrigint

  • iOSでの標準ライブラリとのパフォーマンス比較はこちらを参照。 thumbありモードのtrigint_sin16()でsin()の4.4倍、sinf()の6.7倍、thumbなしモードのtrigint_sin16()でsin()の3.8倍、sinf()の6.2倍、高速とのこと。
  • ちなみにiPhoneではコードサイズ節約のため、デフォルトではthumbありの設定になっている。Appleによるとthumbモード時のコードサイズはthumbなしの場合に比べて35%小さくなるらしい

iPhoneゲーム用として一番早いvector/matrix mathライブラリは?

たまたまGoogleで見かけた以下の書き込み
What's the fastest vector/matrix math library in C for iPhone game?

iOS4以降であれば、Accelerate framework(2010.06.26) に含まれるvDSP/BLASファンクションがCPU又はSIMDに最適化されていて最速だそうです。
一方iOS5にはGLES Kitが追加され専用のMathライブラリも付くようなので、今後はiOS限定であればこれが正解なんだろうなぁ。


applicationDidFinishLaunchingが呼ばれない

iPhone/iPad ゲーム開発ガイドの第3章のサンプルコードを入力していて、AppDeligateに追加したapplicationDidFinishLaunching:が呼ばれない。
テンプレートに元々あったdidFinishLaunchingWithOptionsをコメントアウトするとapplicationDidFinishLaunchingが呼ばれるようになりました。

調べてみると、iOS3.0以降は、application:didFinishLaunchingWithOptions:の使用を推奨しているとのことなので、自分で追加したapplicationDidFinishLaunchingを削除し、同様の内容をdidFinishLaunchingWithOptionsに記述することにしました。