Path: chuka.playstation.co.uk!news1.scei.co.jp!usenet From: "einsiedler" Newsgroups: playstation.ny.program.beginner Subject: =?ISO-2022-JP?B?UmU6IBskQiVhJWIlajZ1NFYbKEo=?= Date: 9 Sep 1997 18:18:10 GMT Organization: Playstation Net Yarouze Lines: 94 Message-ID: <5v43t2$m70@news1.scei.co.jp> References: <01bcbc85$3a0af480$d10d84d2@NIGHTMEA> <01bcbd2f$f8835380$fe0d84d2@NIGHTMEA> NNTP-Posting-Host: 210.132.203.237 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Newsreader: Microsoft Internet News 4.70.1161 einsiedler ですけど、(僕の思い込みと妄想ですが、) # 長いので書き込みエラーするかな? Internet News バグ直ってる? 過去記事いわく > GPU パケット等ではアドレスの上位8ビットを0x80と決め付・・ > ポリゴン等が00090000〜001fff00に移したとたん全く表示され > なくなりました。 らしいです。注意しましょう。 kanzaki wrote > 0x000000000なんですが、これは16進法で考えるんですよね 僕はそのとうりだと思い込んでます。0x が頭についてるし。 > そして、0x000000000にデータを格納すると、 > その中にはどのぐらいの量が入るのですか? 4 byte(= 32 bit)、と思い込んで使ってます。 1 byte では 00 から FF まで、というか 8 bit 格納できます。 ゴミ追加すると 過去に話があったように リトルエンディアン ですので 1 byte 毎に順序が変わり、例えば //_______________________________ temp.c #include main(){ u_long *PTR = (u_long *)0x00150000; *PTR = 0x410070FF; /* メモリに書き込み */ return 0; } // そして temp.c とセーブし、DOS で // gcc -O2 temp.c -o temp.o // gcc -Xlinker -Ttext -Xlinker 80100000 -o main temp.o // siocons // [F4] // main // go // [ESC] // dsave -ntemp.tmp -a80150000 -s4 とすると、0x00150000 の内容が temp.tmp に入ります。 BZエディタ等で temp.tmp 見た時に FF 70 00 41 となってる。 ( dsave は黄本 P193 、BZ エディタ は今もあるなら http://www.vector.co.jp/vpack/browse/software/sn034987.html) # 普通は上のようなことしちゃ駄目です。malloc 等しましょう。 # だって 0x00150000 が何かにつかわれてたら、ハングする可能性も > お聞きしてから何なんですけど、これの利用価値 > みたいなのはないんですか? 無能な僕には質問の意図するところがわかりませんでした。 (x_x)_ > カーネル何ですけど、windowsでもカーネルdllって言うのが > ありますよね。これの簡単な役割を教えていただきたいのですが。 素人の僕には全然、さっぱりです。玄人のフォローを待ちましょう。 僕の妄想によればカーネルは OS のなかで中心となる存在です。 おそらく、他の GPU とかを制御するやつで、BIOS を内装しメモリ 内どこでもアクセスできて、ユーザーモードのプログラムがハング したりするとカーネルモードのプログラムに後始末させる。 とかいう便利なものかなぁ?(完全に妄想) > スタックの概要なども添えていただけると非常にありがたいです。 スタックはデータを一時的にほうり込む所です。 平積みの本のように、一番最初においたものが一番したになり とりだせるのは通常、一番上のデータだけです。 僕の知る場合、あるポインタ(通常レジスタ使用 Stack Pointer)に 自由に使えるメモリ領域の最後尾のアドレスをセットしておき、 データを入れたら その分だけポインタを減らす。とかやってました。 データ を出したらポインタを増やします。データサイズに合わせて ポインタはたくさん増えたり減ったりします。この結果Stack Pointer は平積みのデータの最上部のアドレスを示します。 あるCコンパイラでは関数呼び出しのときにスタックを使います。 printf("NetYarouze %d",a); とかやると、"NetYarouze" の先頭アド レスと、a のアドレスが、スタックに一時保存されたかな・・。 また 黄本 P13 によると、自動変数などの一時的な作業領域は スタック中に確保されるように思えます。 > 最後に説明有り難うございました。 駄文ですみません。今度、僕が困ってたら助けてくださいね。(^^; _ _____________________________________________ _ _ __ einsiedler __ einsidle@cb3.so-net.or.jp __ _