サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
hoshizuki.hateblo.jp
実はこのあたりの話を理解しないままに10年近くCでコーディングしていたことに気づいたので、勉強したついでに備忘録。 リンケージ まず基本から。 リンク時にシンボル名が被った時に、実体との対応付けをどうするか、これが3通りあります。 外部リンケージ(ソースファイルを超えて同じ実体を共有) 内部リンケージ(ソースファイルごとに異なる実体を用意、ソースファイル内では同じ実体を共有) リンケージなし(それぞれ別の実体を用意) 局所変数はすべてリンケージなしになります。 グローバル変数は内部/外部リンケージになります。 外部リンケージを持つグローバル変数の宣言・定義 基本形 まず基本的な書き方です。 /* file1.c */ extern int a; /* これは宣言だけ */ /* file2.c */ extern int a; /* こっちのファイルでも宣言だけ */ /* file3.c
デバッガで必要な機能もう1つ。ブレークポイントですね。 これは x86 CPU のデバッグレジスタを利用して実装します。 まず仕掛け。 void SetBreakPoint( HANDLE hThread, DWORD dwAddress ) { CONTEXT ctx = { CONTEXT_DEBUG_REGISTERS }; GetThreadContext( hThread, &ctx ); ctx.Dr0 = dwAddress; ctx.Dr7 |= 0x00000001; SetThreadContext( hThread, &ctx ); } Dr0, Dr1, Dr2, Dr3 と、4つのブレークポイントを仕掛けることが出来ます。 Dr7 はコントロール用のレジスタで、下位16bitで有効・無効を切り替え、上位16bitで用法を決めます。 まず下位16bit。Dr0〜Dr
たまにはハックっぽいことをしたいなと思って。 簡単なデバッガ(のコアだけ)を作ってみた。 デバッガを作るために必要なものは2つ。 アタッチする デバッグイベントを処理する デバッガとしてアタッチする まずデバッガからプログラムを起動する場合は PROCESS_INFORMATION pcInfo; STARTUPINFO supInfo = { sizeof(STARTUPINFO) }; BOOL bResult = CreateProcess( NULL, lpCmdLine, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS | CREATE_SUSPENDED | DEBUG_PROCESS, NULL, NULL, &supInfo, &pcInfo ); if( !bResult ) throw std::runtime_error( "Crea
portupgrade の代わりに使えるのでしょうか。 ruby が必要ない ruby18-bdb も必要ない と、portupgrade のためだけに ruby をインストールする必要がなくなるわけです。 id:m-bird 氏のブコメにコメント (6/22 22:45追記) c じゃなくてシェルスクリプトです。 現在インストールされているパッケージの一覧と、 その更新の有無をリストアップします。 portversion の代わりですね。 # portmaster -L ===>>> Root ports (No dependencies, not depended on) ===>>> libtool-1.5.26 ===>>> perl-5.8.9_3 ===>>> portmaster-2.7 ===>>> 3 root ports ===>>> Trunk ports (No d
FreeBSD システムのディスク全体から特定の記述を探したい場合、ありますよね。 例えば IPv6 プレフィックスが変わったので全体の設定を変えなきゃいけない時とか。どこに設定したっけ…?みたいな。 そんな時はざっくり全体から検索してしまいましょう。 $ sudo find / -path '*/dev/*' -prune -o -path '*/proc/*' -prune -o -path '*/var/log/*' -prune -o -name '*.log' -prune -o -path '*/basejail/*' -prune -o -type f -print0 | sudo xargs -0 grep "search target" | tee result.txt …いやなっげぇよ!! まぁ、以前同じ内容の記事を書いたときのやり方そのままですね。 hoshizuki
Windows XP, Vista では User-mode Driver Framework (UMDF) という ユーザモードで走るドライバ開発のフレームワークがあるみたい。 しかも、ドライバが COM サーバとして書けるようだ。 …デバドラがオブジェクト指向な時代がついに到来か!! というわけで Microsoft にあったドキュメントを読んでみた。 全訳しても何の意味もないので(読めばいいだけだし) 要点だけ備忘録としてメモメモ。 紹介 Windows XP, Vista で使用可能 カメラ・ポータブルミュージックプレイヤーのような Protocol Device Class に対応 Protocol-based or serial bus based ( ex. USB ) なドライバ PDA や携帯のような Portable strage Portable media play
このページを最初にブックマークしてみませんか?
『namecoin - DNS ブリッジを作ってみた - ほっしーの技術ネタ備忘録』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く