メンバーエリア情報
007. API アドレス解決 part 1
Category: 中級編> 19) PIC(位置独立コード) 作成マニュアル
このシリーズの初回で説明させてもらったようにAPIアドレスの解決は通常ローダーの仕事なんですが、位置独立コードは、ローダーの助けを借りて起動するプログラムではないので 自身がIATを持っていません。従ってPIC内部で WindowsAPI を使う場合には 自前で アドレス解決 を行う必要があります。
当初は1回にまとめる予定だったんですが、長くなりそうなので2回にわけて説明させていただきます。初回の今回は、簡単な方から説明させてもらいます。
PICの開発作業が楽になるようなツールを作って紹介しています
..........................................
006. PIC上の変数の使い方
Category: 中級編> 19) PIC(位置独立コード) 作成マニュアル
今回からやっとPIC 本来の詳細に入っていきます。まずは、一番基本になる変数の使い方から学んでいくことにします。通常のプログラムと一番違うところなので、しっかり理解するようにしてください。
..........................................
005. エントリポイント ( EP ) 書き換え
Category: 中級編> 19) PIC(位置独立コード) 作成マニュアル
作成したPICが正常に機能するかどうかを確かめられるように、EP書き換えでPICを埋め込む方法を 先に覚えておいた方がいいと思います。PICは既に存在するものとして、EP書き換えの手順について説明させてもらいます。また次節以降で作成するPICを埋め込むためのコードも紹介させてもらいます。
※ 以下の説明はPEフォーマットに関して、それなりに知っていることを前提にしています。 PEフォーマットについて全く知らないという方はこちらを先に読んでください。
..........................................
004-7. アセンブラの復習 7 - ストリング操作命令
Category: 中級編> 19) PIC(位置独立コード) 作成マニュアル
ここで言うストリングっていうのは、連続するデータ列のことです。 連続するデータ列を簡単に処理できるように、用意されているのがストリング操作命令 です。所謂文字列の処理にも使えます。特に小さいコードを書きたい時には役立ちます。
1. MOVSB/MOVSW/MOVSD ( Move String )
この命令はESI レジスタがポイントしているアドレスにあるデータをEDI レジスタが ポイントしているアドレスに転送します。転送するデータのサイズは、オペランド サイズによって変わります。
扱うデータサイズごとに、MOVSB, MOVSW, MOVSDという命令が用意されています。 これらはそれぞれ、byte、 word(2 byte), doubleword (4byte)の命令を 転送します。ESIレジスタがポイントしているアドレスからEDIレジスタがポイント しているアドレスにデータを転送するという点ではすべて同じです。
これらの命令が実行されると、自動的にESI、EDIレジスタの内容がインクリメントもしくはデクリメントされます。またインクリメント・デクリメントされる量は扱っているデータサイズによって異なります。この動作はこれらの命令を繰り返し用いる場合に役立ちます。ストリング命令を繰り返し使う方法については、後述します。
〜〜 省略 〜〜
..........................................
00406. アセンブラの復習 6 - 制御転送命令
Category: 中級編> 19) PIC(位置独立コード) 作成マニュアル
x86系CPUには、プログラムの流れを変更するために条件付制御転送命令と無条件転送命令が用意されています。プログラムにおいて、分岐処理やループは基本的な要素になるので、しっかり押えておきましょう。
〜〜 省略 〜〜
- 1.無条件制御転送命令
-
- 1.ジャンプ命令(jmp)
- 2.コール命令(call) とリターン命令(ret)
- 2.条件付き制御転送命令
-
- 1. 条件付きジャンプ命令 - Jcc ( Jump If Condition is Met ) 命令
- 2. ループ命令
- 3. Jump If Zero命令
..........................................





