適当に翻訳する。
「AMD Catalyst Installer for Linux」は「AMD Catalyst proprietary driver」のインストールを簡単な操作で行えるようにする。「AMD Catalyst installer」は2種類のインストール方法を用意している。簡単にドライバの設定処理を行うには「Install Driver」を選ぶ。自身の Linux の配布版に合ったインストールパッケージを生成し、それを使ってインストールしたいなら「Generate Distribution Specific Driver Package」を選ぶ。
この覚書の内容は下記の通り
最新版の「AMD Catalyst proprietary driver」は次の Linux 配布版に対応している。
「AMD Catalyst proprietary driver」のインストールを実行する前に、次のソフトウェアを入れておく必要がある。
最適な動作とより良い使用感を求めるならば、次のようなものもある。
Linux用「AMD Catalyst driver」をインストールして最適動作させるには、次のパッケージが適切にインストールされている必要がある。
Linux 用「AMD Catalyst proprietary driver」のアンインストールはこれで完了する。
ドライバをインストールする方法は2つある。ドライバの部品全てを自動的にインストールする「Automatic」と、インストールするドライバの部品を選択できる「Custom」である。
「AMD Catalyst proprietary driver」を「Automatic」でインストールする手順は以下の通り。
Linux 用「AMD Catalyst proprietary driver」のインストールが完了する。
「Custom option」でインストールするドライバの部品を選択できる。「AMD Catalyst proprietary driver」を「Custom option」でインストールするには以下の手順を取る。
Linux 用「AMD Catalyst proprietary driver」のインストールが完了する。
項目「Generate Distribution Specific Driver Package」を選択することで、自身の Linux 配布版に誂えられたインストールパッケージを簡単に生成できる。オペレーティングシステム製作者が定めた動作規則の利用を通じて、特定の Linux 配布版への最適化が実現されている。「Generate Distribution Specific Driver Package」を使って「AMD Catalyst proprietary driver」をインストールするには以下の手順に依る。
Linux 用「AMD Catalyst proprietary driver」のインストールが完了する。
ドライバの更新通知を受け取るには、次の「RSS feed」を自身の「RSS reader」に追加する。http://www2.ati.com/rss/catalyst.rss
公開された「AMD Catalyst proprietary driver」は「Linux feedback program」を通じて得た成果情報を利用している。
情報の還元「feedback」を提供したい人は http://www.amd.com/us/LinuxCrewSurvey を参照。
皆さんに質問。
「不必要な」ポインタの比較が理解できない。
/*
207 * min()/max() マクロは
208 * 厳格な型の審査をも行う。
209 * 「不必要な」ポインタ比較の項を参照。
210 */
211 #define min(x,y) ({ \
212 typeof(x) _x = (x); \
213 typeof(y) _y = (y); \
214 (void) (&_x == &_y); \
215 _x < _y ? _x : _y; })
216
217 #define max(x,y) ({ \
218 typeof(x) _x = (x); \
219 typeof(y) _y = (y); \
220 (void) (&_x == &_y); \
221 _x > _y ? _x : _y; })
222
214行と220行にはどのような意味があるのか?
両方とも結果は常に「FALSE」になると思っている。というのは、&_x は局所変数 _x の番地(address)であり、&_y は局所変数 _y の番地(address)だから。
だからこの「不必要な」ポインタ比較の意味が分からない。
誰か説明できる人?
baumann@pan
「baumann@pan」の書き込み:
> 「不必要な」ポインタの比較が理解できない。
>
> 211 #define min(x,y) ({ \
> 212 typeof(x) _x = (x); \
> 213 typeof(y) _y = (y); \
> 214 (void) (&_x == &_y); \
> 215 _x < _y ? _x : _y; })
これは gcc 拡張機能を使っている。番地(address)を比較することで、_x と _y が同じ型を持つことを保証するのが214行の狙い。_x と _y が同じ型を持つ場合に限り、それらのポインタも同じ型を持つ。比較の結果は無視されるので、_x と _y が比較不能な型を持っていた場合にコンパイラが診断を始める、というのが唯一の効果。
異なる型の値から生み出された最小値の取得を回避することが目的。なぜなら、そのような最小値を用いると予期せぬ結果が待っているから。例えば次のような宣言があるとする
int x = -1;
unsigned y = 1;
「x > y ? x : y」の値は UINT_MAX である。この種の予期せぬ結果は x と y の両方が int 型なら起こらない。
Ben Pfaff
email:
web: http://benpfaff.org
「baumann@pan」の書き込み:
> 「不必要な」ポインタの比較が理解できない。
>
> /*
> 207 * min()/max() マクロは
> 208 * 厳格な型の審査をも行う。
> 209 * 「不必要な」ポインタ比較の項を参照。
> 210 */
> 211 #define min(x,y) ({ \
> 212 typeof(x) _x = (x); \
> 213 typeof(y) _y = (y); \
> 214 (void) (&_x == &_y); \
> 215 _x < _y ? _x : _y; })
> 216
> 217 #define max(x,y) ({ \
> 218 typeof(x) _x = (x); \
> 219 typeof(y) _y = (y); \
> 220 (void) (&_x == &_y); \
> 221 _x > _y ? _x : _y; })
> 222
>
>
> 214行と220行にはどのような意味があるのか?
>
> 両方とも結果は常に「FALSE」になると思っている。というのは、
> &_x は局所変数 _x の番地(address)であり、&_y は局所変数 _y の番地(address)だから。
>
>
> だからこの「不必要な」ポインタ比較の意味が分からない。
>
しかし、どちらのマクロも移植性が極端に低い。typeof() 演算子と文の表現は共に gcc 拡張機能であり、標準 C には含まれていない。
<OT>
typeof() という名前からも分かるように、_x は x と同じ型を持ち、_y は y と同じ型を持つ。_x と _y の番地(address)比較は、これらが同じ型を持つ時は必ず成功し、同じ型を持たない時は成功しない。結果は関係なく、捨てられる。重要なのは、引数の型が一致しなかった場合にコンパイラがマクロ呼び出しを拒絶するようにしていること。
</OT>
Keith Thompson (The_Other_Keith) kst- <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
< .com> の記事における
「baumann@pan」 <> の書き込み:
> 皆さんに質問。
>
> 「不必要な」ポインタの比較が理解できない。
>
> /*
> 207 * min()/max() マクロは
> 208 * 厳格な型の審査をも行う。
> 209 * 「不必要な」ポインタ比較の項を参照。
> 210 */
> 211 #define min(x,y) ({ \
> 212 typeof(x) _x = (x); \
> 213 typeof(y) _y = (y); \
> 214 (void) (&_x == &_y); \
> 215 _x < _y ? _x : _y; })
> 216
> 217 #define max(x,y) ({ \
> 218 typeof(x) _x = (x); \
> 219 typeof(y) _y = (y); \
> 220 (void) (&_x == &_y); \
> 221 _x > _y ? _x : _y; })
> 222
>
>
> 214行と220行にはどのような意味があるのか?
>
> 両方とも結果は常に「FALSE」になると思っている。というのは、
> &_x は局所変数 _x の番地(address)であり、&_y は局所変数 _y の番地(address)だから。
>
>
> だからこの「不必要な」ポインタ比較の意味が分からない。
>
> 誰か説明できる人?
これが C でないという事実はともかく、多分 C と似た言語だろう。
min(2, 4.7f) を試そう。通るか? 動くか?
カレンダー
カテゴリー
最新コメント
最新記事
ブログ内検索
広告