ここでは紹介しているソースファイルをアセンブルするのに必要なファイルや環境設定について説明をしています。
HSPSDK
ランタイム作成時のみ、HSPインストール先のHSPSDK\LIBフォルダにあるHSP2LIB.LIB、HSP2.ICO、HSP2.RCが必要です。
また、DOCSフォルダにあるHSPDLL.HTM、HSP2LIB.HTMは一通り読んでおいて下さい。
ヘッダファイル(ダウンロード)
HSPSDKのヘッダファイルをMASM用に移植+αしたファイルです。
プラグイン作成用のHSPDLL.INCとランタイム作成用のHSPHRT.INCがあります
C標準ライブラリ
ランタイム作成時のみ必要です。ここではVC++6.0のLIBC.LIBを使用します。
MASM32 hutch's home pageの「MASM32 Download Page」から入手できます
これにMASM本体とWindows用開発環境がそろっています。
MASM Ver6.15 Iczelion's Win32 Assembly Homepageの「Downloads」の「MASM 6.15」から入手できます
MASM32に含まれているのはVer6.14です。それで全然問題ないのですが、もし必要ならば入手して下さい。SSE2に対応しているようです。
説明ファイル
MASMとx86CPUの日本語説明ファイルです。
当サイトではMASMの使い方やニーモニックの説明などはしていないので、必要に応じて参照して下さい。
Microsoft Macro Assembler リファレンス 言うまでもなくMASM開発元のサイトです。エラーメッセージの説明などものっています。JavaScriptはONにしてください。
インテル・日本語技術資料のダウンロード こちらも言うまでもなくCPU開発元のサイトです。「IA-32 インテル(R) アーキテクチャ・ソフトウェア・デべロッパーズ・マニュアル、上巻、中巻、下巻」があります。ボリュームが大きいですが、その分内容が詳しいです。
HERO'S Download Index・・・x86CPU.CHM とASM.CHMが置かれています。マニュアルを持ってない方には必須でしょう。
環境変数
MASM32をインストールしたら、環境変数の設定をします。少なくとも実行ファイルにパスを通し、INCLUDEとLIBは設定して下さい。
意味が分からないときは以下のバッチファイルを作成してアセンブル前に実行するようにしてください。
C:\MASM32にインストールした場合
ファイル名:INI_MASM.BAT
SET PATH=C:\MASM32\BIN;%PATH% SET INCLUDE=C:\MASM32\INCLUDE;%INCLUDE% SET LIB=C:\MASM32\LIB;%LIB%
アセンブルするバッチファイルの例
バッチファイルの「プロパティ」->「メモリ」->「環境変数の初期サイズ」を1024以上にしてください。
@ECHO OFF
CALL INI_MASM.BAT
Ml /c /coff TestHpi.asm
if errorlevel 1 goto error
Link /SUBSYSTEM:WINDOWS /DLL TestHpi.obj
if errorlevel 1 goto error
goto fin
:error
echo ===============================エラー======================================
:fin
echo ===============================終了=======================================
KERNEL32.LIB
ランタイム作成時のみですが、MASM32v8のKERNEL32.LIBにはGetEnvironmentStringsが含まれていないため、リンク時にエラーが出てしまいます。よって正常なKERNEL32.LIBをWin32SDKなどから持ってくるか、作り直す必要があります。
作り直し方
KERNEL32.INCをテキストエディタで開いて
GetEnvironmentStrings equ <GetEnvironmentStringsA>
を削除して代わりに
GetEnvironmentStrings PROTO
を入れて保存します。後は
C:\MASM32\INCLUDE\INC2L KERNEL32.INC
を実行すれば新しいKERNEL32.LIBが出来るのでMASM32\LIBフォルダに移します。
バッチファイル
ソースファイルのアセンブルにはバッチファイルを使用しています。
各バッチファイルのプロパティで、「プログラム」タブの「実行時のディレクトリ」と、「メモリ」タブの「環境変数の初期サイズ」はきちんと設定しておいてください。
プラグイン毎にバッチファイルを作成するのが面倒ならば、MASM32のQEDITORを利用するか、BATUTYなどのツールを利用して下さい。