はじめに

 以前は、高速に動作するプログラムを開発するためにアセンブリ言語が使われることもよくありました。 しかし、最近ではコンパイラが非常に優秀になり、下手にアセンブリ言語で書くとかえって遅くなるとさえ言われています。 そのような状況の中で、敢えてアセンブリ言語を使用する必要性があるのかと思われる方もいるでしょう。 デバイスドライバやOS等の開発にはアセンブリ言語が必要ですが、HSP用のプラグインを作るのにわざわざアセンブリ言語を使うのは無駄だと思われるかもしれません。

 しかし、MMX命令や3D Now!命令等を利用するとなると話は別です。 他人が作成したDLLやライブラリ等を呼び出すだけならいいのですが、MMX命令や3D Now!命令を利用したDLLを自分で作成するためには、アセンブリ言語を使用しなければなりません。 そこで、無料でダウンロードできるアセンブラを利用して、DLLを作成する事は出来ないだろうかと考えました。 そして、幾つかのアセンブラをダウンロードして挑戦したところ、MASM32でDLLの作成をする事が出来ました。

 ある程度アセンブリ言語の分かる方はもちろん、全く分からない方にも理解していただけるように、アセンブリ言語の基礎から応用まで少しずつ解説していきたいと思います。 このページを読んで何かわからないことがあれば、遠慮なく掲示板で質問して下さい。 自分のわかる範囲内であればお答えしたいと思います。

目次

  1. MASM32のインストールと、簡単なサンプル 2/18更新
  2. アセンブリ言語の基礎
  3. PVAL構造体とPVAL2構造体
  4. BMSCR構造体とWin32API
  5. デバッグウインドウもどきの表示
  6. ストリング操作命令による文字列の操作
  7. ストリング操作命令による画像処理(前編)
    ストリング操作命令による画像処理(後編)
  8. MMX命令による画像処理
  9. HSP Ver.2.6の新機能(春休み中に執筆予定)
hspdll.inc(hspdll.hをMASM32に移植したもの。第4章参照)
注:このhspdll.incはHSP Ver.2.5の頃のhspdll.hを元にしているため、現時点ではVer.2.6のhspdll.hで拡張された部分には対応していません。 春休み中に対応したいと思います。

debug.asm(デバッグウインドウもどきを表示させるプログラム。第5章参照)

参考文献

  1. DLL入門
    http://web.kyoto-inet.or.jp/people/ysskondo/index.html

  2. LCCでHSPのDLLをつくろう
    http://www.bl.mmtr.or.jp/~iwaiwa/

  3. What's assembler?
    (トップページ→「Programing」→「What's assembler?」)
    http://www9.freeweb.ne.jp/computer/hiramez/index.shtml

  4. MLアセンブラ ヘルプ
    (トップページ→「AVR関係以外のヘルプファイル(資料)」→「ASM.CHM」)
    http://homepage1.nifty.com/radio_tech/

  5. パソコン・プログラミング言語の歴史(6) - 構造体
    (トップページ→「ソフトウェア・デザイン館より(エッセイ)」)
    http://www.sage-p.com/

  6. x86 CPU ヘルプ
    (トップページ→「AVR関係以外のヘルプファイル(資料)」→「X86CPU.CHM」)
    http://homepage1.nifty.com/radio_tech/

  7. HSPからのDLL呼び出し方法リファレンスマニュアル
    (「Hot Soup Processorのページ」→「HSPオフィシャル資料」)
    http://www.onionsoft.net/hsp/

  8. MASMライブラリ
    http://www.vector.co.jp/soft/dos/prog/se010298.html

  9. HSPの裏技??
    http://yokohama.cool.ne.jp/chokuto/

  10. 共通技術情報 (C/C++)
    (トップページ→「V.I.P ROOM "D.L.L."」)
    http://tech.ne.nu/

  11. 偽マシン語講座
    http://www2.netwave.or.jp/~ace-k/

  12. MMXでSIMD演算
    (トップページ→「プログラミング」→「MASMプログラミング」)
    http://www.geocities.co.jp/SiliconValley-PaloAlto/5989/

  13. LinuxでMMXを使う
    http://volta.me.ics.saitama-u.ac.jp/~fujita/