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

自分のコードの証とは?」記事へのコメント

  • 10年ぐらい前に読んだ本なのですが、
    "Pascal"という文字列が機械語では特定の演算に対応していて、文字列を実行し、レジスタの内容を確認すると、その文字列が書き換えられたかどうかが判定できる、というものがありました。
    x86のシェア(特に商用ソフト)を考えると、x86+特定のコンパイラで文字列にもなる機械語列を用意する、というのはアリかもしれません。
    • by oku (4610) on 2005年03月21日 21時25分 (#711825) 日記

      厳密には文字列と違いますが、IOCCC [ioccc.org] でソース中にマシン語を直接埋め込む コード [ioccc.org] が 受賞した [ioccc.org] ことがあります。

      それから、奈良女の新出先生の UNIX like tools の中にもそういうコードがあったような記憶があります (com2txt とか sos だったかも知れない)。 あれは確か static char [] な文字列だったと思います。 LSI C-86 限定でインラインアセンブラが必要なら、素直に asm を使えばいいのですが、DOS コンパイラ汎用で人間最適化するためのテクニックではなかったかと勝手に想像しています。

      で、何が言いたいかというと、上記の受賞作品の hint にある通り、

      NOTE: If your machine is not a Vax-11 or pdp-11, this program will
      not execute correctly. In later years, machine dependent
      code was discouraged.

      なのではないかと。 ソース配布の長所の一つに「アーキテクチャに依存しない (ようにすることもできる)」点もあるわけですから。

      タレコミのように GPL を前提にするのではなく、 商用ソフトのバイナリを売ることが目的なのであれば 「文字列として、かつマシン語としても有効」である必要はないはずです。 それこそ魔法のデータ列をバイナリ中に埋め込んで 「このソフトに同梱されている fuga.dll 中には、当社が仕込んでおいた hoge という文字列が散見される。 従って、このソフトは盗品である」と主張すればすむわけですから。

      親コメント

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

処理中...