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

Apple、1~2年後に自社開発のプロセッサを搭載したMacを投入する?」記事へのコメント

  • まあ、NEXTSTEPの時代から、複数のCPUで動くバイナリの仕組みはあるわけだから、開発者側がお行儀良くコードを書いていれば、コンパイルオプションだけでなんとかなるので、ユーザはそれほど気にしないで良いかもしれない。

    でも、例えばARMっでx86とバイトオーダが違うみたいなので、一筋縄ではいかないかぁ。

    #一筋縄でイかない場合でも、亀甲縛りならイく…

    • MC680x0(ビッグエンディアン)→PowerPC(バイエンディアン)→x86(リトルエンディアン)って入れ替わってきたし、ARMはバイエンディアンだしなんとかなるんじゃないの?たぶん。
      親コメント
      • by manmos (29892) on 2015年01月16日 16時30分 (#2744563) 日記

        いや、エンディアンを意識せずにコード書いちゃうとあとから、エライ目に合います。

        昔、知り合いが、「この本のとおり書いてみたんだけど、動かない」と相談を受けたので見てみると、ビッグエンディアンでしか動かないネットワーク系のサンプル。
        即座に、後輩達に「その本を持っているのであれば、直ちに焚書せよ」との命令を発したことがある。(わたしはRichard Stevensの本しか参考にしたことがなかったので、そんなひどい本があるとも思っていなかったが)

        親コメント
        • by Anonymous Coward on 2015年01月16日 21時02分 (#2744736)

          「ビッグエンディアンでしか動かない~」ってのはビッグエンディアンであることを前提として(≒利用して)書かれたコードであると思うので、「エンディアンを意識せずにコード書いちゃう」ってのとは逆ではないの。

          親コメント
          • by Anonymous Coward

            ネットワーク系のサンプルなのにバイトオーダーへの配慮・補足がない、って話でしょうね。htonとか。
            明らかな前提を設けて意識的に書かれたコードか、無意識に処理系依存してしまったコードか、結果だけではどちらとも。

            • by Anonymous Coward

              > 明らかな前提を設けて意識的に書かれたコード

              そんなものを書籍のサンプルに載せる時点でやっぱり焚書しておk

          • by Anonymous Coward

            「ネットワーク系のサンプル」が記載された本ならば、CPUがなんであろうとネットワークバイトオーダに変換するように書いておくっていうのが当然だと思うけど? 
            そうすれば利用するほうからみれば、"エンディアンを意識せずにすむ"ようになるわけで。

            自分の使う環境に限定したコードで,かつ絶対に継続性が無いということがいえないなら、「ビッグエンディアンであることを前提としてネットワーク系コードを書く」ましてや本として出版するなんてことはやっちゃいけないことだと思う。

      • by Anonymous Coward on 2015年01月17日 15時23分 (#2745080)

        バイエンディアンって実際には使い辛いんですよねぇ。
        「ここのコードはビッグエンディアン前提で書いてあるから、モードを切り換える」なんてことをしてくれるはずもなく。(ThumbARMのようにはいかない)
        コンパイルスイッチで切り替わったりするのでバイトオーダーを知りたいときにはプリデファインされた識別子を調べることになるけど、統一された標準って無さそうなんですよ。新しめのコンパイラだとGCC流が使えたりするけど、プロジェクトによっては昔のプロセッサをメンテしている関係でコンパイラも古かったりするので、汎用で使える判定方法って意外と苦労する。
        いずれにせよエンディアンの吸収が必要なら、Chipによって一意に決められたほうが調べるべき識別子は少なくて済んだりするし。
        #他機器と通信するのに、リトルエンディアンのデータプロトコルってどうなのよと毎度呪う。

        親コメント

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

処理中...