cookies.txt      .scr

ただのテキストファイルのようだ

undefinedとunspecified

未定義と不定って訳されるらしい。
似て非なるものなので。
http://c-faq.com/ansi/undef.html
を読んでみて、自分の解釈。

implementation-defined : コンパイルに失敗してはならず、なにか振る舞わないといけない。The Standardが許される振る舞いをいくつか書いておいたときは、その中から選ばなくてはならない。また、挙動について文書化されている必要がある。
unspecified : コンパイルに失敗してはならないし、The Standardが何か書いていたときはそこから選ばなくてはならないが、特にどんな挙動をするかを書かなくてもよい。
undefined : 何が起こるかわからない。クラッシュするかもしれないし、おかしな挙動を示してもよい。(「よい」とか書くと変?

ちょっと違うかもしれない。
ところで、これらはANSI Cの奴なので、今時のC++とかは知らない。

impose no particular requirementsってのは、別に挙動が突拍子もないものでも、構わないってことかなと。
undefinedのコードを実行する時にウィルス的挙動発動とかでも、ANSI Cの規格にかなってはいるよということかなと。

TotalMounterをWindows8に入れてしまい、BSoDに陥った人へ

13/08/03,執筆当時の話です。

いやもしかしたら僕だけなのかもしれないけれど。SSDだし。

ところでTotalMounterのRequirementsを見てみよう。
http://www.kernsafe.com/product/totalmounter.aspx
どこにWindows8という文字があるんだい?
対応機種に入ってないのに、特にドライバを新たに入れるようなソフト、気軽に入れるもんじゃない。

症状

  1. インストール後、そのまま操作を続けていたところ何かの拍子でMEMORY_MANAGEMENTでググれとのメッセージとともにBlue Screen of Death。
  2. 再起動をされるも、パスワードを入力し、ログインを押した直後くらいに同じBSoDを観測し、再起動。
  3. 2.に戻る。

解決方法

  1. ログイン画面にて右下に電源ボタンがあるはず。
  2. Shiftキーを押しつつ再起動を選択して、出てきたオプションで「トラブルシューティング」「スタートアップ設定」を押し、「再起動」ボタンをクリック。
  3. 再起動後、「6」キーを押し、"6 セーフモードとコマンドプロンプトを有効にする"。
  4. ここでログイン。
  5. コマンドプロンプトにて、「control.exe」と入力、Enterを押す。
  6. ちょっと変わったコントロールパネルが出てくるので、いつもどおり「プログラムのアンインストール」画面へと行き、件のTotalMounterをアンインストール。
  7. アンインストール完了すると、おそらく「再起動しますか?」的メッセージ。再起動する旨のボタンをクリック。

もし選択ダイアログが出てこなければ、コマンドプロンプトに「shutdown.exe /r /t 0」とかするといいと思います。

これで治った。*1



学んだのは、Windows8のセーフモードってF8連打じゃないんですね、ってこと。無駄にF8がすり減った。
それから「セーフモードとコマンドプロンプトを有効にする」っていうのは、「セーフモードを有効にする+コマンドプロンプトを有効にする」ではないっていうこと。だって「セーフモードを有効にする」だと変わらずBSoD吐いたもん。

*1:ほんとはmsconfig.exeを起動して、診断スタートアップを有効にしたりいろいろしたんだけれど、たぶん関係ないはず。もし治らなかったら試してみてもいいのかもしれない。

x64の関数の引数の渡し方

Windows:
http://msdn.microsoft.com/en-us/library/zthk2dkh.aspx
RCX, RDX, R8, R9が基本。
CD89と覚えよう。

GCC:
RDI,RSI,RDX,RCX,R8,R9の順。
RDIとRDX覚えづらいね。


ともにRAXは、32bit同様戻り値が入る。