パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

すべてアセンブリ言語で書かれたMenuetOS、ついにバージョン1.0となる」記事へのコメント

  • 何か理由があってアセンブリ言語にこだわっているのか? プロセッサの処理能力もメモリもジャブジャブ有り余っていて、昔と比べてコンパイラも飛躍的に性能が良くなったのに..........

    • by Anonymous Coward

      電力とか容積をジャブジャブ使えない環境を想定してるから

      • by Anonymous Coward on 2015年05月18日 2時34分 (#2815950)

        いやそれ、さんざん言われている幻想だから…。
        今時の、pipeliningやout-of-orderバリバリのプロセッサのアセンブリ言語で、コンパイラより効率の良いコードを書くなんて無理よ。
        今でも、ごく小さいコードについて人間が最適化するケースはあるけど、OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。
        コードサイズについても、コンパイルの設定で、余分なランタイムを一切使わないバイナリを生成することだってできるし、その場合手書きコードと比べて劣る点は一切ない。
        コードサイズについては、LinuxがCで書かれていることからも明らかでしょ。

        親コメント
        • by Anonymous Coward on 2015年05月18日 5時43分 (#2815963)

          LinuxがCで書かれてるのはコードサイズが小さいからじゃない。
          生産性とかパフォーマンスとか学習効率とかその他もろもろのバランスが良いから。
          参加者全員の知識とスキルが十分に高くて、時間が無限にあるならフルアセンブラで書かれてる。

          # 今時アセンブラでバリバリ最適化する人はコンパイラが吐く最適化済みのコードとか
          # コンパイラの最適化部分のソースとかも読んだ上で最適化を考えてるのでコンパイラに負ける事はない

          親コメント
          • by Anonymous Coward

            # 今時アセンブラでバリバリ最適化する人はコンパイラが吐く最適化済みのコードとか
            # コンパイラの最適化部分のソースとかも読んだ上で最適化を考えてるのでコンパイラに負ける事はない

            これ。人間はコンパイラの吐いたコードを参考にするが、逆はない。

          • by Anonymous Coward

            ああ、これ見てこの変な流れの理由が分かった気がする。
            元コメの人、とにかくアセンブラで書くだけで早くなるんだ!
            みたいな、汎用機上がりのおっさんにでも出会って、
            それがアセンブラ使いの全てと思い込んじゃってるんじゃないか?

            # 知識をアップデートしてないって時点で、自分が馬鹿にしてるアセンブラ使いと同じレベルなんだけど。

        • by Anonymous Coward

          手書きアセンブラの方が速いとか言っている人は、絶対に今どきのアセンブラの最適化をやったことがないよね。
          今どきのCPUの最適化って、ループのμopの数を数えて命令キャッシュに入るか確かめるとか、
          ALUの表を作ってパイプラインストールがないかチェックするとか、「こんなことはコンピュータがやれよ」と思うような作業ばっかりなんだけど、
          こういう人たちは、優秀なハッカーなら、映画かアニメみたいにすらすら完璧なコードを書けると思ってるんだろう。

          • by Anonymous Coward

            SSE/AVXのレジスタの割り当てとか、人間がやるほうが効率が良い場合もあるよ。
            SSE/AVXのロード・ストア命令もCPUによって最適な命令が違ったりするけどコンパイラはそんなこと考慮にしてくれないしね。

            • by Anonymous Coward

              元コメとは違うACだけど、

              元コメAC氏は「今でも、ごく小さいコードについて人間が最適化するケースはあるけど」とそういった事例は認めた上で、
              「OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。」と述べてるんですよ。

              • by Anonymous Coward

                「コードサイズについても、コンパイルの設定で、余分なランタイムを一切使わないバイナリを生成することだってできるし、その場合手書きコードと比べて劣る点は一切ない。」とも言ってますね。

              • by Anonymous Coward

                > 「OS全体を手書きのアセンブラで書いて、コンパイラに勝つなんてありえない。」
                人間のやる事ですから、なんでもあり。 その人のレベルによる。
                 
                アセンブラの方が早いって、Cからアセンブラしたけど、最適化がなくなった分、遅くなったとか。
                それをCに戻して、早くした事もあるし。
                 
                確かに、OS全体は今時、ありえないって思うが、世の中、化け物もいるって事。

              • by Anonymous Coward

                高級言語の場合はだいたいABIが決まっているからアセンブラのほうが有利だな

              • by Anonymous Coward

                irreducibleなグラフはコンパイラは最適化を諦めて保守的になるから、アセンブラのほうが有利だな

              • by Anonymous Coward

                アセンブラの方が早いって、Cからアセンブラしたけど、最適化がなくなった分、遅くなったとか。
                それをCに戻して、早くした事もあるし。

                「早くした」って、分かってなくてたまたまそうなっただけじゃね

          • by Anonymous Coward

            それ以前の話で、C言語とかでうまく仕様をコンパイラに伝えることができないからじゃないの?
            例えば、ローテイト命令、エンディアンの変換なんて、それをC言語で書いちゃうとかなり無駄なコードになってしまう。
            それを書かれた言語の意味が変わらない範囲でいくら最適化したところで無駄なコードができてしまう。
            そういった一般的によくある問題は、すでにアセンブラなど最適化された関数が用意されてるからいいもののないものに関してうまく伝えることができない。

          • by Anonymous Coward

            あなたは、C言語で書かれたものをコンパイラがアセンブリ言語にするか人がするかの比較しかしてない。
            仕様をC言語に直した時点で無駄が発生してるんです。

最初のバージョンは常に打ち捨てられる。

処理中...