Top サイトマップ

Assembly Language

更新:2009/12/31 20:12

NASM/Yasm の LEA

2009.12.31(木)

 「A general NASM guide for TASM coders and other ASM people」での LEA に
ついての説明が、良かったのでここに記します。

■ MASM/TASM の LEA

 MASM/TASM では、レジスターに単純なオフセットをロードするときに下記のいずれか
の方法で行います。

mov esi, offset MyVar
lea esi, MyVar

複雑なアドレスは、LEA でロードします。

lea edi,[esi*4+ebx]

■ Yasm/NASM の LEA

 Yasm/NASM では、レジスターに単純なオフセットをロードするときに LEA ではなく
MOV を使います。

mov esi, MyVar

LEA を使うのは、複雑なアドレスをロードする場合だけです。

lea edi,[esi*4+ebx]


Yasm/NASM と JWasm 用の ELF32 実行フォーマット用マクロ

2009. 5.15(金)

■ Yasm/NASM と JWasm 用の ELF32 実行フォーマット用マクロ

 Yasm/NASM と JWasm のバイナリー出力の機能を使って直接 ELF の実行ファイル
を出力するマクロです。マクロのデータが ELF のヘッダーに変換されます。

FreeBSD と Linux で動作を確認しています。

尚、JWasm は、バージョン 1.95 以降が対象となります。


■ FreeBSD と Linux のフォーマットの違い

ELF32 の実行フォーマットなんですが、FreeBSD と Linux で微妙に違っています。
8バイトめのデータが、FreeBSD では 9 に Linux では 3 になっています。

 FreeBSD のフォーマット

0000-0000  7f 45 4c 46 01 01 01 09  00 00 00 00 00 00 00 00

 Linux のフォーマット

0000-0000  7f 45 4c 46 01 01 01 03  00 00 00 00 00 00 00 00

■ 参考資料



alink ソース

2009. 5.15(金)

■ alink ソース

 Windows 用の ALINK を FreeBSD と Linux で動くようにしたものです。

gmake コマンドを使ってコンパイルします。

> gmake     # FreeBSD の場合
> make      # Linux の場合