トップページ⇒tech
46コメント17KB

EEコンパイラ・バグ告知スレ

■ このスレッドは過去ログ倉庫に格納されています
0001hogehogeNGNG
PlayStation2用にSCEIから配布されているEEコンパイラは
バグだらけです。にもかかわらず、深刻なバグがあっても
SCEIからの正式なアナウンスはありません。

EEコンパイラはGCCであり、このコンパイラに関する不具合の
提示は守秘義務の抵触はありません。

ご活用ください
0002magemageNGNG
/usr/local/sce/1st_read/のなかにあるけど。
0003デフォルトの名無しさんNGNG
↑それ、氷山の一角に過ぎない。コンパイラのみならず、リンカもバグだらけ。
0004デフォルトの名無しさんNGNG
ゲーム開発板へ逝け!



                  といつか逝ってみたいっすわ。
0005デフォルトの名無しさんNGNG
>>4
激しく同意



                     といつか逝ってみたいね。
0006デフォルトの名無しさんNGNG
もっとも多様的なスキルが求められるゲーム開発系は、別板必要。
0007デフォルトの名無しさんNGNG
CW4PS2はどうよ?
0008デフォルトの名無しさんNGNG
CWの場合、SCEIから提供されるライブラリの対応が
一歩遅れているという点で減点。
でもメトロの責任ではないのだが・・・
0009デフォルトの名無しさんNGNG
まだゲーム開発板出来ないの?
0010デフォルトの名無しさんNGNG
どこか人気の無い板占拠して、そこ使うとか>9
0011デフォルトの名無しさんNGNG
EEといっても枯れてるMIPS拡張に過ぎないのだから
コンパイラにあれだけバグが多いのも不可思議な話ではあるが
0012デフォルトの名無しさんNGNG
厨房だらけの気の毒な板になってしまう
0013デフォルトの名無しさんNGNG
>>11
EEそのもののバグを回避するためのコードが悪さしてるとか。
CWつかってるから良く知らんけど。

つーか、この手の話題はお膝元のbbsに書いたほうが良くない?
0014デフォルトの名無しさんNGNG
俺、プログラマー歴15年だが、どうやったらテカテカな車が動かせるのか
不思議でならない。ほんと、ゲーム屋は凄いですな。
0015デフォルトの名無しさんNGNG
>>14
そのゲーム屋の9割は、どうやっているのか知らないでしょう。
ライブラリを整備する人が1人居れば、後はその人が提供する機能を
利用するだけです。

必要なのは、プログラムの知識よりも、3Dの知識ですね。
0016デフォルトの名無しさんNGNG
>>3
>コンパイラのみならず、リンカもバグだらけ。
どんなのあるか教えてくださいませ、お代官様。
いまんとこ新しい方で作ってるけど、とりあえず平気みたい。
0017デフォルトの名無しさんNGNG
>>15
そりゃ悲惨すぎ、もう少し勉強させましょう。
わたしんとこは1/3くらいかな、分からないのは。
0018デフォルトの名無しさんNGNG
>>17
3 じゃないけど
1st_read に無いやつだと
long128 つかったら、どういうわけだか4バイトしか
領域確保しとらんとか食らったことがある。
大概うまく動くからマジわからん。
いまのことろ、他にはくらってない。
0019デフォルトの名無しさんNGNG
確かにPS2のソフト見てると、ほんとに同じノイマン式コンピュータ
で動いてんのかよ?って感じですわ。
でもって、linux for PS2 を購入したわけですが。
職業柄、とりあえず鯖は立てられたが、ポリゴン一枚自力で出せん。
マニュアル見てもワカラン。

CPUの命令種類数だってワケわからんくらい増えとるじゃないですか?
というかMIPSオリジナル命令数ってたかがしれてなかったっけ?
昔、newsのメンテやってたことあるから、mips系はそれなりに
把握しているつもりだったのだが

あれだけ命令数増えてたら、既存のGCCにちょっと手を加える
程度じゃコンパイラは出きないんじゃない?

いや、ソースみとらんから分からないけど
0020デフォルトの名無しさんNGNG
macroで ## を使うとwarningでるけど、
/**/ ならwarningでないとかあった。

… どーでもいいね スマン
0021デフォルトの名無しさんNGNG
>long128 つかったら、どういうわけだか4バイトしか
>領域確保しとらんとか食らったことがある。
え?それって、スタック上?それともstaticな領域で?
long128といえば、アラインされない問題点もあったなぁ。今は直った
らしいけど。
0022デフォルトの名無しさんNGNG
>>19
増えてるのは MME だけ、あとはちょっとした便利命令ですね。
MME01両パイプ塞いじゃうから、よほど巧く使わないと効果的でないです。
だから MME は、転置行列作ると、データ展開ルーチン作る時くらいかな。
実質はあんまり変わらないと思っていいとおもうんですけど・・・

便利命令といえば max.s とか min.s とかの拡張は重要ですね、
あれあるおかげでパイプラインがみだれない、が・・・・ee-gccのクソバカ、コード生成せんでブランチしやがる!!
CW はちゃんと吐くのかな、使ったこと無いけど・・・
ひょっとしてコンパイラオプションでそういうの生成するのとかあるんですかね?

つ〜か、おれ、いつまで仕事してんだ(藁
ねむい
0023デフォルトの名無しさんNGNG
>>21
C++ で class ん中、殺す!!
しかも、出るときはでる、でないときはでない。
コメントいれると直ることもある。
0024デフォルトの名無しさんNGNG
>わたしんとこは1/3くらいかな、分からないのは。
あ、ウチんとこの部署もそれくらいの割合。
1プロジェクトにプログラマー3、4人いて、低レベルできる
人は一人みたいな。この業界、低レベルできるくらいだったら、
高レベルも当然できるのよね。だから低レベル可能人はそれだけで
希少価値がちょっとだけ高まる。けど、給料は変わらん。
0025デフォルトの名無しさんNGNG
>C++ で class ん中、殺す!!
ぎゃー!良かった僕のところ生Cで。
ていうか、そんなバグがあるなら、
PS2では実質、C++は使えんってこと?

そいや一時期のEEコンパイラでは、unsigned char だろうと
auto変数は一つの変数につき16バイト分確保されていた。
スタック消費が激しかったわけですな。
ところが最近、この部分は賢くなったらしい。
この「賢くなった」ってのが恐いのでアップデートしとらんけど。
0026デフォルトの名無しさんNGNG
GCCは恐くて使えんですよ。
ってことでうちはCW派だす。
0027デフォルトの名無しさんNGNG
>>25
そういうのがあったんだ、実は詳しくは調べてないんです。
デバッガで追っていって予定通りの位置アクセスしてるかどうか
見てみたら4バイトずれてる臭いということです。
ほとんど動くまで、行いれたり抜いたり試行錯誤です、怖いですハイ。
0028デフォルトの名無しさんNGNG
>26
俺もCW。つってもまだセットアップしただけなんだけど。
CW<->GCCのソースコードの互換はどんなもんなの?

PS2はあんまり気乗りがしないのう。
ネットはぼろぼろだし、高水準なグラフィックライブラリもないし。

それにしてもC/C++コンパイラ自体のUnitTestやんないのかね。
一番テストの蓄積しやすそうな分野だと思うんだけど。

あ〜なんか眠くて支離滅裂だな。
これ以上やるとものすごいコード書きそうなんでもうやめとこ。
0029デフォルトの名無しさんNGNG
>>21
ちなみにメモリ領域は auto static 両方どっちでもでてる・・・ような気がする。
0030デフォルトの名無しさんNGNG
>それにしてもC/C++コンパイラ自体のUnitTestやんないのかね。
>一番テストの蓄積しやすそうな分野だと思うんだけど。
EE自体にバグが多い、あるいは極めてバグに近いSCE自称仕様が
多いので、一概にコンパイラ単体の責任ではテストできないのかも
しれないですな
003115NGNG
>>17
>>24

9割というのは、文脈からしても言い過ぎだったかも。

ただ、本当に3Dの知識を理解して、それを実装できている人は少ない、
ということを言いたかったのです。

テクスチャ座標の自動生成だけど、GLで言う
GL_OBJECT_LINEAR
GL_EYE_LINEAR
が、どういう風に算出されているのか、言える人は回りに居ますか?

同次座標系が持つ意味をきちんと理解していますか?
また、クリッピングに応用できてますか?

自分の時は、全部手探りでした。今でも数学的な部分は
理解しきれていないと思います。
0032デフォルトの名無しさんNGNG
>>19
コンパイラに手を加えるような人が居る確率は、会社単位で見ても稀有でしょう。

そういう時は、ミドルウェアを利用して、
ネイティブなコード吐かせろヤ!ゴルァ!!
と怒鳴るのです。

でも、吐けるようになるのはごく一部なので、結局必要な部分を
アセンブラで書いている会社が多いのでは?

といっても、PS2でアセンブラを使う必要があるとしたら、VU0をコプロとして
利用する時くらいでしょう。
0033デフォルトの名無しさんNGNG
>>27
C++だと、typedefの__attribute__が無視される場合があるみたい。
ところで新toolchainつかってます?

>>32
> そういう時は、ミドルウェアを利用して、
> ネイティブなコード吐かせろヤ!ゴルァ!!
> と怒鳴るのです。

意味不明なので説明してほしいなぁ
0034デフォルトの名無しさんNGNG
> C++だと、typedefの__attribute__が無視される場合があるみたい。
元のgcc-2.96(ちょいまえ?)のバグの可能性大。
0035デフォルトの名無しさんNGNG
>33
新toolchain入れたらそれまでコンパイルできていたソースがコンパイルできなく
なってやめたよ。調査する時間ないからそのままほってあるけど。
ee-gdbはよくなったねぇ。これでiop-gdbやvu-gdbがあればいいのだが。
0036デフォルトの名無しさんNGNG
>>33
言い回しが悪かったかな。

CodeWarriorやProDGを使え、ということです。

拡張命令を利用したコードを吐くようにしろ、と言うのです。
ま、あんまり対応してくれないとは思いますが(ワラ
0037デフォルトの名無しさんNGNG
>>35
1st_readのところや、sceのバグ報告に対処する時に気をつける点が
書かれてるから、目を通してみそ。
0038デフォルトの名無しさんNGNG
ゲーム製作技術板@したらばBBS
http://www.shitaraba.com/bbs/gamecreate/index.html

したらば対応 ぎこtk(perl/tk) ブラウザ
http://www.gooside.com/perltk/
0039デフォルトの名無しさんNGNG
aiueo
0040デフォルトの名無しさんNGNG
ところで、そういうことに時間を割くのがもったいないのなら、
CodeWariorを導入した方がいいのでは?

少なくとも、ライブラリを書く人はあった方が楽だと思う。
iopの方もOKだし、ちょっと不便なところもあるけど、VUの
デバッグトレースもできる。

VUMemを覗いたりもできるから、他社の・・・
0041デフォルトの名無しさんNGNG
いくらVU1アセンブラで最適化しても、GSネックの場合(単位プリミティブ
面積が大きい場合など)は、ブロッキングされますよね?
そうすると、VU1パワーの宝の持ち腐れ現象が発生してしまうわけですが、
みなさんどのように解決してます?
0042デフォルトの名無しさんNGNG
>>36
>CodeWarriorやProDGを使え、ということです。

そーいうのはミドルウェアとは言わんと思うんですけど。
あとProDGのコンパイラはgccです。残念でした(プ
アセンブラやリンカは独自のも入ってるみたいだけどね。
0043デフォルトの名無しさんNGNG
ProDGはSN-SystemsがGCCをカスタマイズ。
SCEIから配布されているのは、SCEIがカスタマイズ。
0044デフォルトの名無しさんNGNG
ProDG情報きぼん。
0045デフォルトの名無しさんNGNG
compilerは単にwin32でcompileしたものだよ
linker,assembler,debuggerは気合入ってる

> SCEIから配布されているのは、SCEIがカスタマイズ。
そりゃあやしい SONYならともかくSCEIじゃあなぁ
Cygnus(RedHat)とSNだろ?
0046デフォルトの名無しさんNGNG
>>33
__attribute__((aligned(16)))が効かないってのは未だに残ってる
しかも効く場合もあって、効かない場合の条件が不定だから問題
グローバル且つスタティックならばほぼ確実に効くけど
■ このスレッドは過去ログ倉庫に格納されています