[過去ログ] ゲームボーイアドバンス(GBA)非公式開発 Part2 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
466
(3): 2006/02/25(土)15:23 ID:LRNrnoNa(1/4) AAS
ある構造体に汎用的な配列を用意し、状況によって汎用配列部分に
別の構造体をキャストすることでいろいろ使い分けられるように
したいんですが下記(分けて書き込みます)のようなソースがうまく動きません。
「w->cnt = 5;」等の部分で値を代入しているのに正しい値がはいりません。
VC++では正しく代入できるようです。なぜだかわかりますか?
仕様なんでしょうか?
469
(1): 2006/02/25(土)16:32 ID:ChwfFfDn(1/3) AAS
>>466-467
アライメントの勉強をしてみよう。
外部リンク:www.google.co.jp

この場合は u8 のアライメントしか持っていない wrk に
u16 としてアクセスしていることが原因。
GBA の CPU である ARM ではアライメント違反した書き込みはできない。
VC++ で正しく動作するように見えるのは CPU が違うから。
省1
471
(1): 2006/02/25(土)17:28 ID:JLoubNl/(1/2) AAS
>>466
>>469を踏まえてこれでもう一度テストしれ

typedef struct{
u8 use;/* 動作フラグ */
u16 no;/* 自分自身のタスク番号 */
u8 phase;/* 動作フェーズ */
u8 wrk[48];/* 汎用ワークエリア */
省8
481: 466 2006/02/26(日)15:39 ID:UpVKMws2(1) AAS
構造体のキャストで質問したものです。
とりあえず、みなさんのおかげで
スプライト制御が一段落したんで
経過をご報告します。
外部リンク[zip]:2ch-library.com
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.031s