アカウント名:
パスワード:
モバイルギア(WindowsCE機)のアプリケーションを開発していたときに、C のソースで構造体を使ったら何をやってもハードウェア例外発生。MIPS ではデータ配置が 4バイトとの倍数というルールを知らなかった。けっきょくダミーバイトを埋め込んで解決したけど、未熟だったなあ。構造体の配置 [microsoft.com]
未熟だったのはコンパイラでは?構造体のパディングとかの環境依存な処理はコンパイラの仕事です。
x86とMSVC6PP5辺りでの事だけど、構造体のメンバに__m128な変数を定義した場合、その__m128な変数は16バイト境界に合わない場合が有ったような気がするする。__declspec(align(16))とはいったい...。
関係あるかわかりませんが、古いABIのMSVC++でvtableとアライメント要求のきついメンバがあると、非効率的なパッキングが行われるのは結構イライラしました。
http://lolengine.net/blog/2012/10/21/the-stolen-bytes [lolengine.net]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
MIPS CPU (スコア:2)
モバイルギア(WindowsCE機)のアプリケーションを
開発していたときに、C のソースで構造体を使ったら
何をやってもハードウェア例外発生。
MIPS ではデータ配置が 4バイトとの倍数というルールを知らなかった。
けっきょくダミーバイトを埋め込んで解決したけど、未熟だったなあ。
構造体の配置 [microsoft.com]
Re: (スコア:0)
未熟だったのはコンパイラでは?
構造体のパディングとかの環境依存な処理はコンパイラの仕事です。
Re:MIPS CPU (スコア:2)
x86とMSVC6PP5辺りでの事だけど、構造体のメンバに__m128な変数を定義した場合、その__m128な変数は16バイト境界に合わない場合が有ったような気がするする。
__declspec(align(16))とはいったい...。
Re: (スコア:0)
関係あるかわかりませんが、古いABIのMSVC++でvtableとアライメント要求のきついメンバがあると、非効率的なパッキングが行われるのは結構イライラしました。
http://lolengine.net/blog/2012/10/21/the-stolen-bytes [lolengine.net]