[過去ログ]
ゲームボーイアドバンス(GBA)非公式開発 Part2 (1002レス)
ゲームボーイアドバンス(GBA)非公式開発 Part2 http://mevius.5ch.net/test/read.cgi/gamedev/1099119005/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
469: 名前は開発中のものです。 [sage] 2006/02/25(土) 16:32:04 ID:ChwfFfDn >>466-467 アライメントの勉強をしてみよう。 http://www.google.co.jp/search?q=%E3%83%A1%E3%83%A2%E3%83%AA+%E3%82%A2%E3%83%A9%E3%82%A4%E3%83%A1%E3%83%B3%E3%83%88 この場合は u8 のアライメントしか持っていない wrk に u16 としてアクセスしていることが原因。 GBA の CPU である ARM ではアライメント違反した書き込みはできない。 VC++ で正しく動作するように見えるのは CPU が違うから。 x86 系ではアライメント違反した書き込みはパフォーマンスが落ちるだけ。 http://mevius.5ch.net/test/read.cgi/gamedev/1099119005/469
474: 名前は開発中のものです。 [sage] 2006/02/25(土) 17:38:12 ID:ChwfFfDn >>470,472 union 使ってアライメント確保する方法がある。 Cだとコレぐらいでいいんじゃないかな? union { u8 size_holder[48]; void* pointer_align; long long integer_align; long double floating_point_align; } wrk; C++ だとメンバ変数・関数ポインタを追加。 >>471 packed はパフォーマンス落としたりバイナリ互換に問題が発生したりするんで 気をつけて使う必要がある。非標準になるしね。 その例だと TSKWRK に packed は必要ない。 http://mevius.5ch.net/test/read.cgi/gamedev/1099119005/474
476: 474 [sage] 2006/02/25(土) 18:33:56 ID:ChwfFfDn >>475 サンプルの意味はそういうこと。 union 自体のアライメント要求がメンバの中で最大の物になることを利用したもの。 GBA のハードウェアで4バイト以上のアライメントを要求するものは 無かったと思うので、 GBA に限った動作だけを考えれば u32 での置き換えで問題ないと言える。 http://mevius.5ch.net/test/read.cgi/gamedev/1099119005/476
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.457s*