■掲示板に戻る■ 1- 最新10

レス数が950を超えています。1000を超えると表示できなくなるよ。

初心者もOK! FreeBSD質問スレッド その10

[328:いひひ (01/12/26 15:10)]
>>327
-mcpu=pentiumpro -march=pentiumpro


[329:名無しさん@お腹いっぱい。 (01/12/26 15:29)]
>>328
ありがとう!
Pentiumproとして扱えばいいのですね
-mcpuと-marchってなにが違うのでしょう..


[330:いひひ (01/12/26 16:48)]
>>329
man読めYO!

> -mcpu=cpu type
> 命 令をスケジューリングする際のマシンタイプのデフォ
> ルトを設定します。 CPU TYPE の選択肢は i386, i486,
> i586 (pentium), pentium, i686 (pentiumpro), および
> pentiumpro です。ある CPU TYPE を選ぶと、その 特 定
> チッ プに適するようにスケジューリングを行いますが、
> -march=cpu type オプションを指定しない限り、コン パ
> イ ラは i386 で実行できないようなコードは生成しませ
> ん。

> -march=cpu type
> マシンタイプ CPU TYPE 用に命令を生成し ま す。 CPU
> TYPE の 選択肢は i386, i486, pentium, および pen-
> tiumpro です。 -march=cpu type を 指 定 す >る と
> -mcpu=cpu type も指定されたものとみなします。

 アセンブラ読めない人間なんで推測を
述べるけど、-mcpuだけなら「386用の命令」を、
「Pentium Proに最適化した形で並べ換える」
だけ。-marchで「Pentium Proだけが持つ命令を
使い始める」んじゃなかろうか。

識者の突っ込みキボーン。

# ふむ、-march指定していれば-mcpuも
# 指定したことになるのか。ド忘れしてたよ。


[331:名無しさん@お腹いっぱい。 (01/12/26 16:52)]
>330 正解。ただgcc-2.95.3の-march=i586とi686にはdead lockを起こすコードを生成する
バグがある、とOpenBSDの連中は主張している。


[332:名無しさん@お腹いっぱい。 (01/12/26 16:59)]
>>330-331
ありがとうございます!
SSIとか使うコードができるのかなぁ


[333:名無しさん@お腹いっぱい。 (01/12/26 17:08)]
-march=i686するとcmov使ってくれるのが(・∀・)イイ!!


[334:名無しさん@お腹いっぱい。 (01/12/26 18:05)]
どんなのなのそれ?


[335:名無しさん@お腹いっぱい。 (01/12/26 18:24)]
>>334
条件付きmov。たとえば、
int foo(int x)
{
return (x == 10) ? 20 : x;
}
みたいに書いた場合、通常は
foo:
movl 4(%esp),%eax
movl $20,%edx
cmpl $10,%eax
je .L3
movl %eax,%edx
.L3:
movl %edx,%eax
ret
とコンパイルされるけど、cmovを使うと
foo:
movl $20,%eax
cmpl $10,4(%esp)
cmovne 4(%esp),%eax
ret
このようになり、ジャンプをしなくて済むようになる。
条件ジャンプはパイプラインを乱すので結構効果ある。


[336:名無しさん@お腹いっぱい。 (01/12/26 18:26)]
>>312
また定義バカが現れた・・・


[337:名無しさん@お腹いっぱい。 (01/12/26 18:48)]
>>336
また定義バカにつっむバカが現れた・・・


次10 前10 最新10
NAME:MAIL:

read.cgi ver5.26+ (01/10/21-)