ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

2007-01-01から1年間の記事一覧

平方根の近似値

とある教授と話をしていて「なるほど!」と思ったのでメモ。 ベクトルの正規化などで平方根を求めたいけど 平方根は回路的にコストが高い。そんなときに使うウラワザ。 浮動小数は仮数と指数に分けて という形で記録されているけれど、ここでaにあたる仮数部…

ブレークポイント - 2

普通のデバッガにあるような実行時に止めるブレークポイントは上のように出来ます。 Dr7 の上位16bitを弄ると少し特殊な 特定のアドレスに書き込んだとき 特定のアドレスに読み書きしたとき のブレークポイントを仕掛けることができます。 4bits 4bits 4bits…

ブレークポイントの仕掛け方

デバッガで必要な機能もう1つ。ブレークポイントですね。 これは x86 CPU のデバッグレジスタを利用して実装します。 まず仕掛け。 void SetBreakPoint( HANDLE hThread, DWORD dwAddress ) { CONTEXT ctx = { CONTEXT_DEBUG_REGISTERS }; GetThreadContext(…

シングルステップ実行の仕方

x86 系 CPU のフラグレジスタには、Trap Flag というフラグがあって、 これを立てると次の1命令を実行してトラップ例外を起こします。 void SetSingleStepMode( HANDLE hThread ) { CONTEXT ctx = { CONTEXT_CONTROL }; GetThreadContext( hThread, &ctx ); …

デバッガの作り方

たまにはハックっぽいことをしたいなと思って。 簡単なデバッガ(のコアだけ)を作ってみた。 デバッガを作るために必要なものは2つ。 アタッチする デバッグイベントを処理する デバッガとしてアタッチする まずデバッガからプログラムを起動する場合は PRO…

UMDF開発のすゝめ - 4

アーキテクチャに関する説明の部分。 デバイスドライバ まず概念として理解してほしいことは、「Windowsはすべてのものを”オブジェクト”として抽象化している」ことです。例えば私たちは通常、ファイルやディレクトリはそういう”オブジェクト”があるものとし…

UMDF開発のすゝめ - 3

少しずつ書き進めてます。 チュートリアルドキュメント。HelloWorld のソースコードまでできたので、 次はビルド方法です。 その他雑多なファイルを用意する デバイスドライバの本体となるコードは実装し終わりましたが、ビルドするためにはいくつか細かいフ…

日記のタイトル

酔った勢いで適当につけてみた。 他にも「酒と共に去りぬ」とかいいかなと思ったら 著作権的にまずいといわれました。 友人に「酒瓶の空く頃に」とか勧められたけど 元ネタがよく分からないので回避。

スレッド開始アドレス

とある事情で「スレッドの開始アドレス」が必要になったので調べてみると そのものズバリ! GetThreadStartInformation API …はい。対応は Windows Server 2003。しょんぼり。 で、色々調べてみたところ、 ntdll.dll の非公開 API を用いて取得できるようで…

UMDF開発のすゝめ - 2

こないだの続きを執筆中。 断定口調で書いてたけどやっぱりですます調に変更。こっちのほうが個人的に読みやすいwデバイスオブジェクト・ドライバオブジェクトが、 フレームワーク側とドライバ側と二種類あるのがややこしいかも… 後で考えることにしてとり…

Athlon64 CnQ

Cool'n'Quiet について調べてたのでメモ。 Cool'n'Quiet の仕組み そもそも Cool'n'Quiet は、システム内の特殊なレジスタにクロック倍率や電圧の値を持ってて それに応じて CPU が動的に実際の電圧などを変化させて動作する。 ここまでがハードウェアでの実…

最小のUMDFドライバ

DllMain UMDFのデバイスドライバはDLLとして実装することになっている。そのため、一般のDLLと同様にDllMain関数を実装する必要がある。 UMDFとしては特に何か実装しなければならないものはないので今回はとりあえず空の関数を置いておく。(もちろん、何か…

UMDF開発のすゝめ

というわけでUMDFドライバの書き方をドキュメントにまとめてみてる。 珍しく建設的だ。うん。 これを1本の文書としてまとめあげて 情報特別演習の成果物とする予定。

オブジェクト指向でドライバ開発

Windows XP, Vista では User-mode Driver Framework (UMDF) という ユーザモードで走るドライバ開発のフレームワークがあるみたい。 しかも、ドライバが COM サーバとして書けるようだ。 …デバドラがオブジェクト指向な時代がついに到来か!! というわけで…

近況報告

え、最近? あんまり研究らしい研究はしてないです。ごめんなさい。 組み込み系の会社でインターンはじめました。 Universal FUSE の Windows ドライバ書きました。 某グラフィックソフトの開発継続中。 情報特別演習で怪しげなドライバを書くことになりそう…

どうでもいいこと2

この間ふととある人に聞かれた。 Q: 「Hossy@FlyHigh!!」ってどういう意図でつけたの? A: お答えしましょう。当時は色々調子がよくて(調子に乗ってて) ハイテンションの余り「I can fly!!」とか非常に気の触れたことを言ってたので その勢いでつけて…

どうでもいいこと

http://bcnranking.jp/it_junior/21-00012742.html ちなみに高校生初は私ね。 会場風景、写真に写ってない辺りはがら空きだったそうですが。 これがいわゆる情報操作ですか。 情報を受け取る側のみなさん、気をつけましょう。

CreateCompatibleDC / Bitmap

最近はとあるアプリを黙々と開発中。 一応お仕事。バイトなのかな?どっちでもいいけど。 で、画面の描画に CreateDIBSection に基づく DIB バッファを用意して いろんなグラフィック演算をゴリゴリっとやった挙句に BitBlt で描画してるんだけど…… 遅い。 単…

5ヶ月ぶり更新〜

わー。気が付くと5ヶ月も放置してたんだ(笑) 日々のどうでもいい話を mixi 技術ネタのみこっちのはてな って分けたら、こっちに全然書かなきゃなっちゃった... まぁ、なんか気づいたら書こう...