アカウント名:
パスワード:
何か理由があってアセンブリ言語にこだわっているのか? プロセッサの処理能力もメモリもジャブジャブ有り余っていて、昔と比べてコンパイラも飛躍的に性能が良くなったのに..........
電力とか容積をジャブジャブ使えない環境を想定してるから
いやそれ、さんざん言われている幻想だから…。今時の、pipeliningやout-of-orderバリバリのプロセッサのアセンブリ言語で、コンパイラより効率の良いコードを書くなんて無理よ。今でも、ごく小さいコードについて人間が最適化するケースはあるけど、OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。コードサイズについても、コンパイルの設定で、余分なランタイムを一切使わないバイナリを生成することだってできるし、その場合手書きコードと比べて劣る点は一切ない。コードサイズについては、LinuxがCで書かれていることからも明らかでしょ。
手書きアセンブラの方が速いとか言っている人は、絶対に今どきのアセンブラの最適化をやったことがないよね。今どきのCPUの最適化って、ループのμopの数を数えて命令キャッシュに入るか確かめるとか、ALUの表を作ってパイプラインストールがないかチェックするとか、「こんなことはコンピュータがやれよ」と思うような作業ばっかりなんだけど、こういう人たちは、優秀なハッカーなら、映画かアニメみたいにすらすら完璧なコードを書けると思ってるんだろう。
SSE/AVXのレジスタの割り当てとか、人間がやるほうが効率が良い場合もあるよ。SSE/AVXのロード・ストア命令もCPUによって最適な命令が違ったりするけどコンパイラはそんなこと考慮にしてくれないしね。
元コメとは違うACだけど、
元コメAC氏は「今でも、ごく小さいコードについて人間が最適化するケースはあるけど」とそういった事例は認めた上で、「OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。」と述べてるんですよ。
「コードサイズについても、コンパイルの設定で、余分なランタイムを一切使わないバイナリを生成することだってできるし、その場合手書きコードと比べて劣る点は一切ない。」とも言ってますね。
高級言語の場合はだいたいABIが決まっているからアセンブラのほうが有利だな
irreducibleなグラフはコンパイラは最適化を諦めて保守的になるから、アセンブラのほうが有利だな
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」
なぜアセンブリ言語? (スコア:0)
何か理由があってアセンブリ言語にこだわっているのか? プロセッサの処理能力もメモリもジャブジャブ有り余っていて、昔と比べてコンパイラも飛躍的に性能が良くなったのに..........
Re: (スコア:1)
電力とか容積をジャブジャブ使えない環境を想定してるから
Re: (スコア:0)
いやそれ、さんざん言われている幻想だから…。
今時の、pipeliningやout-of-orderバリバリのプロセッサのアセンブリ言語で、コンパイラより効率の良いコードを書くなんて無理よ。
今でも、ごく小さいコードについて人間が最適化するケースはあるけど、OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。
コードサイズについても、コンパイルの設定で、余分なランタイムを一切使わないバイナリを生成することだってできるし、その場合手書きコードと比べて劣る点は一切ない。
コードサイズについては、LinuxがCで書かれていることからも明らかでしょ。
Re: (スコア:0)
手書きアセンブラの方が速いとか言っている人は、絶対に今どきのアセンブラの最適化をやったことがないよね。
今どきのCPUの最適化って、ループのμopの数を数えて命令キャッシュに入るか確かめるとか、
ALUの表を作ってパイプラインストールがないかチェックするとか、「こんなことはコンピュータがやれよ」と思うような作業ばっかりなんだけど、
こういう人たちは、優秀なハッカーなら、映画かアニメみたいにすらすら完璧なコードを書けると思ってるんだろう。
Re: (スコア:0)
SSE/AVXのレジスタの割り当てとか、人間がやるほうが効率が良い場合もあるよ。
SSE/AVXのロード・ストア命令もCPUによって最適な命令が違ったりするけどコンパイラはそんなこと考慮にしてくれないしね。
Re: (スコア:0)
元コメとは違うACだけど、
元コメAC氏は「今でも、ごく小さいコードについて人間が最適化するケースはあるけど」とそういった事例は認めた上で、
「OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。」と述べてるんですよ。
Re:なぜアセンブリ言語? (スコア:0)
「コードサイズについても、コンパイルの設定で、余分なランタイムを一切使わないバイナリを生成することだってできるし、その場合手書きコードと比べて劣る点は一切ない。」とも言ってますね。
Re: (スコア:0)
高級言語の場合はだいたいABIが決まっているからアセンブラのほうが有利だな
Re: (スコア:0)
irreducibleなグラフはコンパイラは最適化を諦めて保守的になるから、アセンブラのほうが有利だな