2006-11-01から1ヶ月間の記事一覧

DbgPrint

DbgPrintで何か出すときに #define MyKdPrint(msg) DbgPrint("header"); DbgPrint msg; みたいなのを使うと、DbgViewで見たときに二行になってしまう。 バッファに一度ためてから出力すればOKで、こんな感じ。#if DBG #define DBG_MSG_HEADER "[MyKernelModu…

DOS版HELLO,WORLD

http://d.hatena.ne.jp/alohakun/20061115/1163587236 int 20hで終了できるのでちょっとだけ短くできる。スタックをいじってなければretでも終了できるみたい。 DOSだったら全部大文字でいいやというのと、!が21hなので、洒落としてint 21hをメッセージに入…

PE Golf (2)

メッセージが「Hello,world」(11バイト) GetStdHandle(STD_OUTPUT_HANDLE)を使用せず、7固定(私の手元の環境) WriteFileが固定アドレス だと、PEでは最小と思われる97バイトで出力可能。 nasm用ソース → https://github.com/firewood/test/blob/master/h…

Binary Hacks

C

http://0xcc.net/binhacks/quiz.html 53点だった。まだまだ修行が足りないな。Q1、3、5、6、8、9、10、11が正解。 これは得点を競うというよりも、どのくらいネタとして楽しめるか、というものな気がする。Q2の?f@@YAXXZはVC++のマングリング名だとか。 Q2の…

issigned

C

問題 → http://d.hatena.ne.jp/kikx/20061106#1162810655 左辺値の回答 → http://d.hatena.ne.jp/kikx/20061117#1163784840ANSI準拠じゃないけど、一応動くものができた。わーい! 前半はインチキだし、後半はkikx氏のそのままだけど。 http://firewood.txt-…

issigned

C

http://d.hatena.ne.jp/kikx/20061106#1162810655 さっぱりわからない... VC++で試していたら、char型で#define issigned(t) ((t += 128) が常にゼロになっている。 GCC(3.4)だとwarning: comparison is always false due to limited range of data typeと警…

PE Golf (1)

リンカオプション/align:16を追加したら672バイトになった。VC++(GUI)だとその辺が限界っぽい。 /stub:stub.exeみたいので自分のstubを使うと544バイトになった。でもこの状態でもPEヘッダの前に64バイトの謎の領域(Richなんとかってやつ)が入っている。 …

Hello, world!

http://d.hatena.ne.jp/shinichiro_h/20061113 明日SEA & FSIJ 合同フォーラムを聴講しに行く予定です。 最小Hello worldだけど、Windowsでメッセージボックスを出力するものだと何バイトなんだろうか。(Windowsの場合、メッセージボックスの方がコンソール…

_TCHAR / TCHAR について考える 頭の T って、何の略だろう…テキストマクロ _TEXT から来ているのでは。意味合いとしてはinternationalized textまたはgeneric textっぽいけど。TCHARと_TCHAR TCHARと_TCHARのどちらを使うか悩むこともあるんだけど、tchar.h…

Windows on Xen

この前カーネル読書会の帰りに、高橋さんに「Windowsプログラマです」と言ったら、「君、XenのWindowsドライバを書いて高速化したまえ」と言われたのだが、水面下で進んでいた模様。 XenSource、WindowsをサポートしたXenを発表 VMware serverが無料で使える…

新しいコマンドプロンプトを開く

はてなブックマークにこれが入っていた。 Windows XP, 2000, NT4 Command Prompt私がコマンドプロンプトから実行するコマンドで、最も多いのはstartだ。 startは、シェルの「開く」という動作と同等で、 start test.dsw とすればVisual C++が起動するし、 st…